kubectl 命令速查
kubectl 高频命令,覆盖查看、调试、日志、事件、上下文和资源变更。
kubectl 命令速查
kubectl 是 Kubernetes 日常运维最常用的命令行工具。生产操作前先确认当前上下文和命名空间,避免误操作集群。
上下文
kubectl config get-contexts
kubectl config current-context
kubectl config use-context prod-cluster
kubectl config view --minify
kubectl config set-context --current --namespace=default
查看资源
kubectl get nodes -o wide
kubectl get namespaces
kubectl get pods -A
kubectl get pods -n default -o wide
kubectl get deploy,sts,ds -n default
kubectl get svc,ep,endpointslice -n default
kubectl get ingress -A
常用输出格式:
kubectl get pod nginx -o yaml
kubectl get pod nginx -o json
kubectl get pod nginx -o jsonpath='{.status.phase}'
kubectl get pod -o custom-columns=NAME:.metadata.name,PHASE:.status.phase,NODE:.spec.nodeName
描述和事件
kubectl describe pod nginx -n default
kubectl describe node worker-01
kubectl get events -A --sort-by='.lastTimestamp'
kubectl get events -n default --field-selector involvedObject.name=nginx
describe 适合看对象状态、调度事件、镜像拉取失败、探针失败和挂载异常。
日志
kubectl logs nginx -n default
kubectl logs nginx -n default -c app
kubectl logs nginx -n default --previous
kubectl logs -f deploy/order-api -n default
kubectl logs -l app=order -n default --tail=200
--previous 用于查看上一个已退出容器的日志,排查 CrashLoopBackOff 很常用。
进入容器和临时调试
kubectl exec -it nginx -n default -- sh
kubectl exec -it nginx -n default -c app -- bash
kubectl run debug-shell --image=busybox:1.36 -it --rm -- sh
kubectl run netshoot --image=nicolaka/netshoot -it --rm -- bash
给已有 Pod 注入临时容器:
kubectl debug -it nginx -n default --image=nicolaka/netshoot --target=app
创建和变更
kubectl apply -f app.yaml
kubectl diff -f app.yaml
kubectl delete -f app.yaml
kubectl create namespace demo
kubectl create deployment nginx --image=nginx:1.27
kubectl expose deployment nginx --port=80 --type=ClusterIP
直接修改线上对象:
kubectl edit deployment nginx -n default
kubectl patch deployment nginx -n default -p '{"spec":{"replicas":3}}'
生产环境更推荐通过 YAML、Helm 或 GitOps 变更,减少临时手改。
发布和回滚
kubectl rollout status deployment/order-api -n default
kubectl rollout history deployment/order-api -n default
kubectl rollout undo deployment/order-api -n default
kubectl rollout restart deployment/order-api -n default
修改镜像:
kubectl set image deployment/order-api app=registry.example.com/order-api:v1.2.3 -n default
伸缩
kubectl scale deployment/order-api --replicas=5 -n default
kubectl autoscale deployment/order-api --min=2 --max=10 --cpu-percent=70 -n default
kubectl get hpa -n default
资源使用
需要 Metrics Server:
kubectl top nodes
kubectl top pods -A
kubectl top pod -n default --containers
权限检查
kubectl auth can-i get pods -n default
kubectl auth can-i create deployments -n default
kubectl auth can-i '*' '*' --all-namespaces
kubectl auth can-i get secrets --as=system:serviceaccount:default:app-sa -n default
常用排查组合
Pod 异常:
kubectl get pod nginx -n default -o wide
kubectl describe pod nginx -n default
kubectl logs nginx -n default --previous
kubectl get events -n default --sort-by='.lastTimestamp'
Service 不通:
kubectl get svc nginx -n default -o wide
kubectl get endpointslice -n default -l kubernetes.io/service-name=nginx
kubectl describe svc nginx -n default
kubectl run netshoot --image=nicolaka/netshoot -it --rm -- curl nginx.default.svc.cluster.local