点击左侧跳转分类;点击命令或示例即可复制。日常请多用 -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 ns、kubectl describe pod name -n ns、kubectl logs -f pod -n ns。
3. 生产变更优先 apply + rollout;drain/delete ns 前再次确认集群。
4. 相关:Docker常用命令 · Dockerfile指令
沪公网安备31010502007661号