K8s K8s K8s高频命令实操手册 XCJYC 2025-11-05 2025-11-18
这些命令基本覆盖日常90%的操作,建议收藏。实际使用中配合tab自动补全,效率会更高。遇到复杂问题,先看events、log和describe,大部分都能找到原因。
记住:生产环境删东西前一定要确认命名空间!!!
1. 查看资源 - 看东西 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 kubectl get pod -o wide -n opsnot kubectl get pod -A kubectl get pod -A --field-selector spec.nodeName=node-01 kubectl describe pod <pod-name> -n <namespace> kubectl logs <pod-name> -n opsnot -f kubectl logs <pod-name> -c <container-name> -n <namespace> kubectl logs <pod-name> --previous
2. 进容器 - 调试 1 2 3 4 5 6 7 8 kubectl exec -it <pod-name> -n opsnot -- /bin/sh kubectl exec -it <pod-name> -c <container-name> -n <namespace> -- /bin/bash kubectl exec <pod-name> -n <namespace> -- ls -la /app
3. 删除重建 - 常规操作 1 2 3 4 5 6 7 8 9 10 11 kubectl delete pod <pod-name> -n opsnot kubectl delete pod <pod-name> -n <namespace> --force --grace-period=0 kubectl delete deployment <deployment-name> -n <namespace> kubectl delete pod -l app=opsnot -n <namespace>
4. 扩缩容 - 调资源 1 2 3 4 5 kubectl scale deployment opsnot-app --replicas=3 -n <namespace> kubectl scale deployment <deployment-name> --replicas=0 -n <namespace>
5. 滚动更新 - 发版 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 kubectl set image deployment/<deployment-name> <container-name>=<new-image> -n opsnot kubectl set image deployment/opsnot-app nginx=nginx:1.21 -n prod kubectl rollout status deployment/<deployment-name> -n <namespace> kubectl rollout history deployment/<deployment-name> -n <namespace> kubectl rollout undo deployment/opsnot-app -n <namespace> kubectl rollout undo deployment/<deployment-name> --to-revision=2 -n <namespace> kubectl rollout pause deployment/<deployment-name> -n <namespace> kubectl rollout resume deployment/<deployment-name> -n <namespace>
6. 配置管理 - 改配置 1 2 3 4 5 6 7 8 9 10 kubectl edit deployment opsnot-app -n <namespace> kubectl get cm -n <namespace> kubectl describe cm opsnot-config -n <namespace> kubectl get secret -n <namespace> kubectl get secret <secret-name> -n <namespace> -o yaml
7. 资源导出 - 备份配置 1 2 3 4 5 6 7 8 kubectl get deployment opsnot-app -n <namespace> -o yaml > backup.yaml kubectl get deployment -n <namespace> -o yaml > all-deployments.yaml kubectl get deployment <deployment-name> -n <namespace> -o yaml --export > clean.yaml
8. 应用配置 - 部署 1 2 3 4 5 6 7 8 9 10 11 kubectl apply -f deployment.yaml kubectl apply -f ./opsnot-configs/ kubectl apply -f https://xxx.com/deploy.yaml kubectl delete -f deployment.yaml
9. 端口转发 - 本地调试 1 2 3 4 5 6 7 8 kubectl port-forward opsnot-pod-xxx 8080:80 -n <namespace> kubectl port-forward service/opsnot-svc 8080:80 -n <namespace> kubectl port-forward --address 0.0.0.0 <pod-name> 8080:80 -n <namespace>
10. 复制文件 - 传文件 1 2 3 4 5 6 7 8 kubectl cp opsnot/<pod-name>:/path/to/file ./local-file kubectl cp ./local-file <namespace>/<pod-name>:/path/to/file kubectl cp <namespace>/<pod-name>:/path/to/file ./local-file -c <container-name>
11. 节点操作 - 维护 1 2 3 4 5 6 7 8 9 10 11 12 13 14 kubectl get nodes -o wide kubectl describe node opsnot-node-01 kubectl cordon <node-name> kubectl uncordon <node-name> kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data
12. 资源使用 - 看监控 1 2 3 4 5 6 7 8 9 10 11 12 13 14 kubectl top pod -n opsnot kubectl top pod -A kubectl top node kubectl top pod -n <namespace> --sort-by=cpu kubectl top pod -n <namespace> --sort-by=memory
13. 标签操作 - 打标签 1 2 3 4 5 6 7 8 9 10 11 12 13 14 kubectl label pod <pod-name> env =opsnot -n <namespace> kubectl label pod <pod-name> env =test --overwrite -n <namespace> kubectl label pod <pod-name> env - -n <namespace> kubectl get pod -l env =prod -n <namespace> kubectl get pod -l 'env=prod,app=opsnot' -n <namespace>
14. 事件查看 - 排查问题 1 2 3 4 5 6 7 8 kubectl get events -n opsnot --sort-by='.lastTimestamp' kubectl get events -A --sort-by='.lastTimestamp' kubectl get events -n <namespace> -w
15. 常用组合技 - 实战 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 kubectl rollout restart deployment/opsnot-app -n <namespace> kubectl get pod -A --field-selector=status.phase!=Running kubectl get pod -A --sort-by='.status.containerStatuses[0].restartCount' kubectl get pod <pod-name> -n <namespace> -o yaml | less kubectl run opsnot-test --rm -i --tty --image=nicolaka/netshoot -- /bin/bash kubectl cluster-info kubectl api-resources
16. 命名空间操作 1 2 3 4 5 6 7 8 9 10 11 kubectl get ns kubectl create ns opsnot kubectl delete ns <namespace> kubens opsnot
17. 小技巧 设置别名,省时间:
1 2 3 4 5 6 7 8 9 alias k='kubectl' alias kgp='kubectl get pod' alias kgpa='kubectl get pod -A' alias kd='kubectl describe' alias ke='kubectl edit' alias kdel='kubectl delete' alias kl='kubectl logs' alias kx='kubectl exec -it'
自动补全(强烈推荐):
1 2 3 4 5 6 7 source <(kubectl completion bash)echo "source <(kubectl completion bash)" >> ~/.bashrcsource <(kubectl completion zsh)echo "source <(kubectl completion zsh)" >> ~/.zshrc
切换上下文:
1 2 3 4 5 6 7 8 9 10 11 kubectl config get-contexts kubectl config use-context <context-name> kubectx prod-cluster (加班哥强烈推荐,好用!) kubectl config current-context
本文来自 opsnot.com 。