kubectl 进阶与调试
约 552 字大约 2 分钟
布欧-Lewyon
2026-05-15
首页 › K8s › 运维与监控(在新窗口打开) › kubectl 进阶与调试
输出格式
kubectl get pods -o wide # 更多列(IP、节点)
kubectl get pods -o yaml # YAML 完整定义
kubectl get pods -o json # JSON 完整定义
# JSONPath 提取
kubectl get pods -o jsonpath='{.items[*].metadata.name}'
kubectl get pods -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.podIP}{""<br/>""}{end}'
# 自定义列
kubectl get pods -o custom-columns=NAME:.metadata.name,STATUS:.status.phase
# 排序
kubectl get pods --sort-by=.status.podIP字段选择器与标签选择器
# 标签选择器(-l)
kubectl get pods -l app=nginx
kubectl get pods -l 'app=nginx,version in (v1,v2)'
# 字段选择器(--field-selector)
kubectl get pods --field-selector=status.phase=Running
kubectl get pods --field-selector=spec.nodeName=node1端口转发
# 转发 Pod 端口到本地
kubectl port-forward pod/nginx-pod 8080:80
# 转发 Service
kubectl port-forward service/nginx-svc 8080:80
# 转发 Deployment
kubectl port-forward deployment/nginx-deploy 8080:80
# 后台转发
kubectl port-forward pod/nginx-pod 8080:80 &调试 Pod
# 进入 Pod Shell
kubectl exec -it nginx-pod -- sh
kubectl exec -it nginx-pod -c sidecar -- sh # 多容器指定容器
# 查看日志
kubectl logs nginx-pod
kubectl logs nginx-pod -c sidecar
kubectl logs --tail=50 -f nginx-pod # 最后 50 行 + 追踪
kubectl logs --previous nginx-pod # 上次崩溃的日志
# 临时调试 Pod
kubectl run debug --image=nicolaka/netshoot -it --rm -- /bin/bash
# 复制文件
kubectl cp nginx-pod:/etc/nginx/nginx.conf ./nginx.conf
kubectl cp ./config.json nginx-pod:/etc/config/节点维护
# 将节点标记为不可调度(已有 Pod 不受影响)
kubectl cordon node1
# 驱逐 Pod(节点维护前执行)
kubectl drain node1 --ignore-daemonsets --delete-emptydir-data
# 恢复调度
kubectl uncordon node1资源操作
# 编辑资源(立即生效)
kubectl edit deployment nginx-deploy
# 打补丁(JSON patch)
kubectl patch deployment nginx-deploy -p '{"spec":{"replicas":5}}'
# 导出 YAML
kubectl get deployment nginx-deploy -o yaml --export > backup.yaml
# 查看 API 资源
kubectl api-resources
kubectl explain deployment
kubectl explain deployment.spec.replicas上下文快速切换
# 查看和切换
kubectl config get-contexts
kubectl config use-context kind-k8s-demo
# 创建新 Context
kubectl config set-context prod-cluster --cluster=prod --user=admin --namespace=production
# 默认 Namespace
kubectl config set-context --current --namespace=myapp小结
-o wide/yaml/json/jsonpath控制输出格式,--sort-by排序。kubectl port-forward本地调试神器,无需暴露 Service。kubectl logs --previous查看崩溃前日志。kubectl cordon/drain/uncordon节点维护标准流程。kubectl explain查看资源字段文档。
