k8s常用命令

Kubernetes(k8s)的命令行工具kubectl是管理集群和资源的核心工具,以下是日常开发和运维中最常用的命令,按场景分类整理:

一、集群基础

查看集群信息(控制平面、节点等)

kubectl cluster-info

查看所有节点(-o wide 显示详细信息)

kubectl get nodes

kubectl get nodes -o wide

查看节点详细描述(用于排查节点故障)

kubectl describe node <节点名称>

检查集群组件状态(kube-apiserver、kube-controller-manager等)

kubectl get componentstatuses

二、工作负载管理(Pod/Deployment/StatefulSet 等)

1. Pod 操作

查看当前命名空间的Pod(-o wide 显示IP和节点)

kubectl get pods

kubectl get pods -o wide

查看所有命名空间的Pod

kubectl get pods --all-namespaces

查看Pod详细信息(事件、容器、挂载等)

kubectl describe pod <pod名称>

创建Pod(从yaml文件)

kubectl create -f pod.yaml

启动/停止Pod(实际中一般通过控制器管理,不直接操作Pod)

kubectl delete pod <pod名称> # 删除后控制器会重建(如果由Deployment管理)

进入Pod的容器(-it 交互模式,-c 指定容器,默认第一个)

kubectl exec -it <pod名称> -- /bin/

kubectl exec -it <pod名称> -c <容器名称> -- /bin/sh

2. Deployment 操作(无状态应用)

查看Deployment

kubectl get deployments

kubectl get deploy # 缩写

查看Deployment管理的ReplicaSet

kubectl get rs

创建/更新Deployment(-f 指定yaml,--record 记录版本)

kubectl apply -f deployment.yaml --record

查看Deployment详细信息

kubectl describe deploy <deployment名称>

伸缩Deployment副本数(--replicas 指定数量)

kubectl scale deploy <deployment名称> --replicas=3

删除Deployment(会同时删除关联的Pod和ReplicaSet)

kubectl delete deploy <deployment名称>

3. StatefulSet 操作(有状态应用,如数据库)

查看StatefulSet

kubectl get statefulsets

kubectl get sts # 缩写

创建/更新StatefulSet

kubectl apply -f statefulset.yaml

伸缩副本数

kubectl scale sts <statefulset名称> --replicas=2

三、服务与网络(Service/Ingress)

1. Service 操作

查看Service(-o wide 显示ClusterIP和端口)

kubectl get services

kubectl get svc # 缩写

创建Service(从yaml)

kubectl apply -f service.yaml

暴露Deployment为Service(自动创建Service,--port 服务端口,--target-port 容器端口)

kubectl expose deploy <deployment名称> --port=80 --target-port=8080 --type=NodePort

查看Service详细信息(Endpoint、选择器等)

kubectl describe svc <service名称>

2. Ingress 操作(管理外部访问)

查看Ingress(需集群已部署Ingress控制器)

kubectl get ingresses

kubectl get ing # 缩写

创建/更新Ingress

kubectl apply -f ingress.yaml

四、配置与存储(ConfigMap/Secret/Volume)

1. ConfigMap(存储非敏感配置)

查看ConfigMap

kubectl get configmaps

kubectl get cm # 缩写

从文件创建ConfigMap(--from-file 指定文件)

kubectl create cm <cm名称> --from-file=app.conf

从键值对创建ConfigMap(--from-literal 键=值)

kubectl create cm <cm名称> --from-literal=env=prod --from-literal=log_level=info

2. Secret(存储敏感信息,如密码、证书)

查看Secret

kubectl get secrets

kubectl get secret # 缩写

创建通用Secret(--from-literal 键=值)

kubectl create secret generic <secret名称> --from-literal=db_password=123456

从文件创建Secret(如证书)

kubectl create secret tls <tls-secret名称> --cert=server.crt --key=server.key

3. PersistentVolume(PV)与 PersistentVolumeClaim(PVC)

查看PV

kubectl get pv

查看PVC

kubectl get pvc

创建PV/PVC

kubectl apply -f pv.yaml

kubectl apply -f pvc.yaml

五、日志与调试

查看Pod日志(-f 实时跟踪,--tail 显示最后N行)

kubectl logs <pod名称>

kubectl logs <pod名称> -f

kubectl logs <pod名称> --tail=100

kubectl logs <pod名称> -c <容器名称> # 多容器Pod指定容器

查看集群事件(按时间排序,排查故障)

kubectl get events --sort-by='.lastTimestamp'

检查资源配置是否符合API规范(验证yaml文件)

kubectl explain <资源类型> # 如 kubectl explain pod.spec

kubectl validate -f pod.yaml

查看资源依赖关系(如Pod关联的Service、PVC等)

kubectl describe pod <pod名称> | grep -i "related"

六、资源管理与限制

查看所有资源(Pod、Service、Deployment等)

kubectl get all

kubectl get all --all-namespaces

查看资源使用情况(需metrics-server组件)

kubectl top node # 节点资源使用率

kubectl top pod # Pod资源使用率

强制删除异常Pod(--grace-period=0 立即删除,--force 强制)

kubectl delete pod <pod名称> --grace-period=0 --force

七、命名空间操作

查看所有命名空间

kubectl get namespaces

kubectl get ns # 缩写

创建命名空间

kubectl create namespace <ns名称>

在指定命名空间操作资源(-n 指定命名空间)

kubectl get pods -n <ns名称>

kubectl apply -f deployment.yaml -n <ns名称>

切换默认命名空间(需安装kubens工具,或修改kubeconfig)

kubens <ns名称>

八、部署与更新

滚动更新Deployment镜像(--image 指定新镜像)

kubectl set image deploy <deployment名称> <容器名称>=<新镜像:版本>

查看Deployment更新历史

kubectl rollout history deploy <deployment名称>

回滚到上一版本(--to-revision 指定版本号)

kubectl rollout undo deploy <deployment名称>

kubectl rollout undo deploy <deployment名称> --to-revision=2

暂停/恢复滚动更新(更新过程中调整配置)

kubectl rollout pause deploy <deployment名称>

kubectl rollout resume deploy <deployment名称>

常用缩写与技巧

资源缩写:pods=po、deployments=deploy、services=svc、namespaces=ns、statefulsets=sts、configmaps=cm

输出格式:-o yaml(yaml 格式)、-o json(json 格式)、-o wide(详细信息)

过滤资源:kubectl get pods -l app=nginx(按标签过滤)

快速生成 yaml:kubectl create deploy nginx --image=nginx -o yaml --dry-run=client > deploy.yaml(--dry-run 仅生成文件不执行)

通过这些命令可以覆盖 k8s 日常管理的大部分场景,更复杂的操作可结合kubectl help或官方文档查询。

相关推荐
潘潘潘潘潘潘潘潘潘潘潘潘5 小时前
【Linux】Linux开发必备:Git版本控制与GDB调试全指南
linux·运维·服务器·git·学习方法
小生不才yz5 小时前
(二)文件管理-基础命令-ls命令的使用
linux
DARLING Zero two♡6 小时前
【Linux操作系统】简学深悟启示录:进程控制
linux·运维·服务器
我真的是大笨蛋7 小时前
K8S笔记-容器和镜像
笔记·云原生·容器·kubernetes
wheeldown8 小时前
【Linux】为什么死循环卡不死 Linux?3 个核心逻辑看懂进程优先级与 CPU 调度密码
linux·运维·服务器·开发语言·c++·unix·进程
xxy.c8 小时前
嵌入式解谜日志-网络编程(udp,tcp,(while循环原理))
linux·运维·c语言·开发语言·数据结构
qq_339191149 小时前
docker 启动一个clickhouse , docker 创建ck数据库
clickhouse·docker·容器
守.护10 小时前
云计算学习笔记——Linux系统网络配置与远程管理(ssh)篇
linux·运维·服务器·ssh·linux网络配置
津津有味道11 小时前
15693协议ICODE SLI 系列标签应用场景说明及读、写、密钥认证操作Qt c++源码,支持统信、麒麟等国产Linux系统
linux·c++·qt·icode·sli·15693