点击左侧跳转分类;点击命令或示例即可复制。日常请多用 -n ns 指定命名空间。

集群与上下文
命令说明示例
kubectl cluster-info 查看集群入口信息 kubectl cluster-info
kubectl config get-contexts 列出全部上下文 kubectl config get-contexts
kubectl config current-context 查看当前上下文 kubectl config current-context
kubectl config use-context name 切换上下文 kubectl config use-context prod
kubectl config view 查看合并后的 kubeconfig kubectl config view
kubectl config view --minify 只看当前上下文配置 kubectl config view --minify
kubectl get ns 列出命名空间 kubectl get ns
kubectl create ns name 创建命名空间 kubectl create ns demo
kubectl delete ns name 删除命名空间(慎用) kubectl delete ns demo
kubectl config set-context --current --namespace=ns 设置当前默认命名空间 kubectl config set-context --current --namespace=prod
kubectl api-resources 列出可用资源类型 kubectl api-resources | head
kubectl api-versions 列出 API 版本 kubectl api-versions
kubectl version 客户端/服务端版本 kubectl version
kubectl explain pod.spec 查看资源字段说明 kubectl explain pod.spec.containers
查看资源
命令说明示例
kubectl get pod -n ns 查看指定命名空间 Pod(最常用) kubectl get pod -n prod
kubectl get pods -n ns 同上(pods 复数形式) kubectl get pods -n prod
kubectl get pod -n ns -o wide 含节点、Pod IP kubectl get pod -n prod -o wide
kubectl get pod -A 所有命名空间 Pod kubectl get pod -A
kubectl get pod -n ns -l app=api 按标签筛选 Pod kubectl get pod -n prod -l app=api
kubectl get pod -n ns --field-selector=status.phase=Running 按字段筛选(如 Running) kubectl get pod -n prod --field-selector=status.phase=Running
kubectl get pod -n ns -w 持续监视 Pod 变化 kubectl get pod -n prod -w
kubectl get deploy -n ns 查看 Deployment kubectl get deploy -n prod
kubectl get deploy -n ns -o wide Deployment 含镜像等信息 kubectl get deploy -n prod -o wide
kubectl get rs -n ns 查看 ReplicaSet kubectl get rs -n prod
kubectl get sts -n ns 查看 StatefulSet kubectl get sts -n prod
kubectl get ds -n ns 查看 DaemonSet kubectl get ds -n kube-system
kubectl get job,cronjob -n ns 查看 Job / CronJob kubectl get job,cronjob -n prod
kubectl get svc -n ns 查看 Service kubectl get svc -n prod
kubectl get ing -n ns 查看 Ingress kubectl get ing -n prod
kubectl get cm,secret -n ns 查看 ConfigMap / Secret kubectl get cm,secret -n prod
kubectl get pvc -n ns 查看 PVC kubectl get pvc -n prod
kubectl get pv 查看持久卷(集群级) kubectl get pv
kubectl get sa -n ns 查看 ServiceAccount kubectl get sa -n prod
kubectl get all -n ns 命名空间内常用资源汇总 kubectl get all -n prod
kubectl get deploy,svc,ing -n ns 部署/服务/入口一起看 kubectl get deploy,svc,ing -n prod
kubectl get nodes -o wide 查看节点 kubectl get nodes -o wide
kubectl get events -n ns --sort-by=.lastTimestamp 按时间查看事件 kubectl get events -n prod --sort-by=.lastTimestamp
kubectl get events -A --field-selector type=Warning 全集群 Warning 事件 kubectl get events -A --field-selector type=Warning
详情与输出格式
命令说明示例
kubectl describe pod name -n ns 看 Pod 事件与状态详情 kubectl describe pod api-xxx -n prod
kubectl describe deploy name -n ns 看 Deployment 详情 kubectl describe deploy api -n prod
kubectl describe node name 看节点详情/污点/容量 kubectl describe node node-1
kubectl get pod name -n ns -o yaml 导出 Pod YAML kubectl get pod api-xxx -n prod -o yaml
kubectl get deploy name -n ns -o yaml 导出 Deployment YAML kubectl get deploy api -n prod -o yaml
kubectl get pod -n ns -o json JSON 输出 kubectl get pod -n prod -o json
kubectl get pod -n ns -o name 只输出资源名 kubectl get pod -n prod -o name
kubectl get pod -n ns -o custom-columns=NAME:.metadata.name,STATUS:.status.phase 自定义列 kubectl get pod -n prod -o custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName
kubectl get pod -n ns -o jsonpath='{.items[*].metadata.name}' jsonpath 提取字段 kubectl get pod -n prod -o jsonpath='{.items[*].metadata.name}'
kubectl get secret name -n ns -o yaml 查看 Secret(值为 base64) kubectl get secret db -n prod -o yaml
kubectl get cm name -n ns -o yaml 查看 ConfigMap 内容 kubectl get cm app-conf -n prod -o yaml
kubectl label --list pod name -n ns 列出资源标签 kubectl label --list pod api-xxx -n prod
kubectl top pods -n ns Pod CPU/内存(需 metrics-server) kubectl top pods -n prod
kubectl top pod name -n ns --containers 看容器级占用 kubectl top pod api-xxx -n prod --containers
kubectl top nodes 节点资源占用 kubectl top nodes
日志与调试
命令说明示例
kubectl logs pod -n ns 查看 Pod 日志 kubectl logs api-xxx -n prod
kubectl logs -f --tail=200 pod -n ns 跟踪最近日志 kubectl logs -f --tail=200 api-xxx -n prod
kubectl logs -c container pod -n ns 多容器指定容器名 kubectl logs -c app api-xxx -n prod
kubectl logs --previous pod -n ns 看上一次崩溃容器日志 kubectl logs --previous api-xxx -n prod
kubectl logs -l app=api -n ns --tail=100 按标签批量看日志 kubectl logs -l app=api -n prod --tail=100
kubectl logs --since=1h pod -n ns 最近一段时间日志 kubectl logs --since=30m api-xxx -n prod
kubectl logs --timestamps pod -n ns 日志带时间戳 kubectl logs --timestamps api-xxx -n prod | tail
kubectl exec -it pod -n ns -- sh 进入 Pod shell kubectl exec -it api-xxx -n prod -- sh
kubectl exec -it pod -n ns -c container -- bash 进入指定容器 kubectl exec -it api-xxx -n prod -c app -- bash
kubectl exec pod -n ns -- cmd 在 Pod 内执行命令 kubectl exec api-xxx -n prod -- ls /app
kubectl exec -it deploy/name -n ns -- sh 进入 Deployment 某个 Pod kubectl exec -it deploy/api -n prod -- sh
kubectl port-forward pod/name 8080:8080 -n ns 本地转发到 Pod kubectl port-forward pod/api-xxx 8080:8080 -n prod
kubectl port-forward svc/name 8080:80 -n ns 本地转发到 Service kubectl port-forward svc/api 8080:80 -n prod
kubectl port-forward deploy/name 8080:8080 -n ns 本地转发到 Deployment kubectl port-forward deploy/api 8080:8080 -n prod
kubectl cp pod:src dest -n ns 从 Pod 拷到本地 kubectl cp api-xxx:/tmp/a.log ./a.log -n prod
kubectl cp src pod:dest -n ns 从本地拷进 Pod kubectl cp ./config.yml api-xxx:/app/config.yml -n prod
kubectl debug -it pod -n ns --image=busybox --target=c 临时调试容器 kubectl debug -it api-xxx -n prod --image=busybox:1.36 --target=app
kubectl attach -it pod -n ns 附着到容器主进程 kubectl attach -it api-xxx -n prod
kubectl run tmp -n ns --rm -it --image=busybox --restart=Never -- sh 临时 Pod 测网络 kubectl run tmp -n prod --rm -it --image=busybox:1.36 --restart=Never -- sh
部署与发布
命令说明示例
kubectl apply -f file.yaml 声明式创建/更新 kubectl apply -f deploy.yaml
kubectl apply -f dir/ -n ns 应用目录并指定命名空间 kubectl apply -f k8s/ -n prod
kubectl apply -k dir/ Kustomize 应用 kubectl apply -k overlays/prod
kubectl create -f file.yaml 命令式创建(已存在会失败) kubectl create -f deploy.yaml
kubectl replace -f file.yaml 强制替换资源 kubectl replace -f deploy.yaml
kubectl edit deploy name -n ns 在线编辑 Deployment kubectl edit deploy api -n prod
kubectl create deploy name --image=img -n ns 快速创建 Deployment kubectl create deploy web --image=nginx:1.27 -n prod
kubectl set image deploy/name c=img -n ns 更新镜像(滚动发布) kubectl set image deploy/api api=myapp:1.2 -n prod
kubectl set env deploy/name KEY=val -n ns 设置环境变量 kubectl set env deploy/api SPRING_PROFILES_ACTIVE=prod -n prod
kubectl set resources deploy/name -n ns --limits=cpu=500m,memory=512Mi 设置资源限制 kubectl set resources deploy/api -n prod --limits=cpu=500m,memory=512Mi --requests=cpu=100m,memory=256Mi
kubectl rollout status deploy/name -n ns 查看发布进度 kubectl rollout status deploy/api -n prod
kubectl rollout history deploy/name -n ns 发布历史 kubectl rollout history deploy/api -n prod
kubectl rollout undo deploy/name -n ns 回滚上一版本 kubectl rollout undo deploy/api -n prod
kubectl rollout undo deploy/name --to-revision=2 -n ns 回滚到指定版本 kubectl rollout undo deploy/api --to-revision=2 -n prod
kubectl rollout restart deploy/name -n ns 触发滚动重启 kubectl rollout restart deploy/api -n prod
kubectl scale deploy/name --replicas=3 -n ns 扩缩容 kubectl scale deploy/api --replicas=3 -n prod
kubectl autoscale deploy name --min=2 --max=10 --cpu-percent=70 -n ns 创建 HPA(旧写法) kubectl autoscale deploy api --min=2 --max=10 --cpu-percent=70 -n prod
kubectl delete -f file.yaml 按清单删除 kubectl delete -f deploy.yaml
kubectl delete deploy name -n ns 删除 Deployment kubectl delete deploy api -n prod
kubectl delete pod name -n ns 删除 Pod(常被控制器重建) kubectl delete pod api-xxx -n prod
kubectl delete pod -n ns -l app=api 按标签批量删 Pod kubectl delete pod -n prod -l app=api
kubectl delete pod --all -n ns 删除命名空间下全部 Pod(慎用) kubectl delete pod --all -n demo
服务与网络
命令说明示例
kubectl get svc -n ns 列出 Service kubectl get svc -n prod
kubectl get svc -n ns -o wide Service 含选择器等 kubectl get svc -n prod -o wide
kubectl describe svc name -n ns Service 详情与 Endpoints kubectl describe svc api -n prod
kubectl get endpoints -n ns 查看后端 Endpoints kubectl get endpoints -n prod
kubectl expose deploy name --port=80 --target-port=8080 -n ns 为 Deployment 创建 Service kubectl expose deploy api --port=80 --target-port=8080 --type=ClusterIP -n prod
kubectl get ing -n ns 列出 Ingress kubectl get ing -n prod
kubectl describe ing name -n ns Ingress 规则与事件 kubectl describe ing web -n prod
kubectl get networkpolicy -n ns 网络策略 kubectl get networkpolicy -n prod
kubectl get svc -A | grep LoadBalancer 查找 LoadBalancer 服务 kubectl get svc -A | grep LoadBalancer
配置与密钥
命令说明示例
kubectl get cm -n ns 列出 ConfigMap kubectl get cm -n prod
kubectl get secret -n ns 列出 Secret kubectl get secret -n prod
kubectl create configmap name --from-file=f -n ns 从文件创建 ConfigMap kubectl create configmap app-conf --from-file=app.yml -n prod
kubectl create configmap name --from-literal=k=v -n ns 从字面量创建 ConfigMap kubectl create configmap app-env --from-literal=ENV=prod -n prod
kubectl create secret generic name --from-literal=k=v -n ns 创建通用 Secret kubectl create secret generic db --from-literal=password=secret -n prod
kubectl create secret docker-registry name -n ns --docker-server=... --docker-username=... --docker-password=... 创建镜像拉取密钥 kubectl create secret docker-registry regcred -n prod --docker-server=registry.example.com --docker-username=u --docker-password=p
kubectl edit cm name -n ns 在线编辑 ConfigMap kubectl edit cm app-conf -n prod
kubectl get secret name -n ns -o jsonpath='{.data.key}' | base64 -d 解码 Secret 字段 kubectl get secret db -n prod -o jsonpath='{.data.password}' | base64 -d
kubectl delete cm name -n ns 删除 ConfigMap kubectl delete cm app-conf -n prod
kubectl delete secret name -n ns 删除 Secret kubectl delete secret db -n prod
标签、注解与污点
命令说明示例
kubectl label pod name key=val -n ns 给 Pod 打标签 kubectl label pod api-xxx env=prod -n prod
kubectl label pod name key- -n ns 删除标签 kubectl label pod api-xxx env- -n prod
kubectl annotate pod name key=val -n ns 添加注解 kubectl annotate pod api-xxx description='demo' -n prod
kubectl label nodes node key=val 给节点打标签 kubectl label nodes node-1 disk=ssd
kubectl taint nodes node key=val:NoSchedule 给节点加污点 kubectl taint nodes node-1 dedicated=gpu:NoSchedule
kubectl taint nodes node key:NoSchedule- 移除污点 kubectl taint nodes node-1 dedicated:NoSchedule-
kubectl cordon node 封锁节点(不再调度新 Pod) kubectl cordon node-1
kubectl uncordon node 解除封锁 kubectl uncordon node-1
kubectl drain node --ignore-daemonsets --delete-emptydir-data 排空节点(维护) kubectl drain node-1 --ignore-daemonsets --delete-emptydir-data
权限与任务
命令说明示例
kubectl auth can-i list pods -n ns 检查当前账号权限 kubectl auth can-i list pods -n prod
kubectl auth can-i '*' '*' -n ns 检查命名空间几乎全部权限 kubectl auth can-i '*' '*' -n prod
kubectl get role,rolebinding -n ns 查看命名空间 RBAC kubectl get role,rolebinding -n prod
kubectl get clusterrole,clusterrolebinding 查看集群级 RBAC kubectl get clusterrole,clusterrolebinding | head
kubectl get sa -n ns ServiceAccount kubectl get sa -n prod
kubectl create token sa -n ns 为 SA 创建令牌(较新版本) kubectl create token default -n prod
kubectl get job -n ns 查看 Job kubectl get job -n prod
kubectl get cronjob -n ns 查看 CronJob kubectl get cronjob -n prod
kubectl create job name --from=cronjob/c -n ns 从 CronJob 手动跑一次 kubectl create job manual-1 --from=cronjob/backup -n prod
kubectl get hpa -n ns 水平扩缩容 kubectl get hpa -n prod
kubectl get pdb -n ns PodDisruptionBudget kubectl get pdb -n prod
kubectl get lease -n ns Leader 选举 Lease kubectl get lease -n kube-system

文档说明

本页整理日常开发与排障最常用的 kubectl 命令。命名空间资源请带 -n ns,或先 kubectl config set-context --current --namespace=ns

1. 先确认上下文:kubectl config current-context

2. 最常用查看:kubectl get pod -n nskubectl describe pod name -n nskubectl logs -f pod -n ns

3. 生产变更优先 apply + rolloutdrain/delete ns 前再次确认集群。

4. 相关:Docker常用命令 · Dockerfile指令