1. 查看资源 – 基础信息获取
# 查看当前命名空间的Pod(最常用)
kubectl get pods
# 查看Pod,并显示IP、节点等详细信息
kubectl get pods -o wide
# 查看所有命名空间的Pod
kubectl get pods -A
# 根据节点筛选Pod
kubectl get pods -A --field-selector spec.nodeName=<节点名称>
# 查看Pod的详细配置、事件和状态(排查神器)
kubectl describe pod <pod-name> -n <namespace>
# 查看Pod日志
kubectl logs <pod-name> -n <namespace>
# 实时跟踪日志输出(类似 tail -f)
kubectl logs -f <pod-name> -n <namespace>
# 查看Pod中指定容器的日志(适用于多容器Pod)
kubectl logs <pod-name> -c <container-name> -n <namespace>
# 查看之前崩溃的容器的日志
kubectl logs <pod-name> --previous -n <namespace>
2. 进入容器 – 调试与排查
# 进入Pod的默认容器(最常用)
kubectl exec -it <pod-name> -n <namespace> -- /bin/sh
# 或
kubectl exec -it <pod-name> -n <namespace> -- /bin/bash
# 进入Pod中的指定容器
kubectl exec -it <pod-name> -c <container-name> -n <namespace> -- /bin/bash
# 不进入交互式Shell,直接在容器内执行命令
kubectl exec <pod-name> -n <namespace> -- ls -l /app
3. 删除与重建 – 常规运维操作
# 删除一个Pod,其所属的Deployment/ReplicaSet会自动重建它
kubectl delete pod <pod-name> -n <namespace>
# 强制快速删除一个Pod(用于Pod卡在Terminating状态时)
kubectl delete pod <pod-name> -n <namespace> --force --grace-period=0
# 删除一个Deployment(会删除其管理的所有Pod)
kubectl delete deployment <deployment-name> -n <namespace>
# 根据标签批量删除Pod
kubectl delete pod -l app=<app-label> -n <namespace>
4. 扩缩容 – 资源调整
# 将Deployment的副本数扩展至3个
kubectl scale deployment <deployment-name> --replicas=3 -n <namespace>
# 将Deployment的副本数缩容到0(相当于停止服务)
kubectl scale deployment <deployment-name> --replicas=0 -n <namespace>
5. 滚动更新与回滚 – 应用发布
# 更新Deployment中容器的镜像,触发滚动更新
kubectl set image deployment/<deployment-name> <container-name>=<new-image> -n <namespace>
# 查看滚动更新的状态
kubectl rollout status deployment/<deployment-name> -n <namespace>
# 查看发布历史
kubectl rollout history deployment/<deployment-name> -n <namespace>
# 回滚到上一个版本
kubectl rollout undo deployment/<deployment-name> -n <namespace>
# 回滚到指定版本
kubectl rollout undo deployment/<deployment-name> --to-revision=2 -n <namespace>
# 重启Deployment(即所有Pod会滚动重启)
kubectl rollout restart deployment/<deployment-name> -n <namespace>
6. 端口转发 – 本地调试
# 将Pod的端口转发到本地(调试Web服务超级方便)
kubectl port-forward <pod-name> 8080:80 -n <namespace>
# 将Service的端口转发到本地
kubectl port-forward service/<service-name> 8080:80 -n <namespace>
7. 节点维护 – 集群操作
# 将节点标记为不可调度(维护前操作)
kubectl cordon <node-name>
# 将节点重新标记为可调度
kubectl uncordon <node-name>
# 驱逐节点上的所有Pod(维护前操作,结合cordon使用)
kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data
8. 实用技巧与快捷设置
设置命令别名(强烈推荐,节省生命):
将以下内容添加到你的 ~/.bashrc 或 ~/.zshrc 文件中。
alias k=kubectl
alias kgp='kubectl get pods'
alias kgpa='kubectl get pods -A'
alias kdp='kubectl describe pod'
alias kl='kubectl logs'
alias kaf='kubectl apply -f'
alias kdf='kubectl delete -f'
alias ke='kubectl exec -it'
启用自动补全(效率翻倍):
# Bash
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
# Zsh
source <(kubectl completion zsh)
echo "[[ $commands[kubectl] ]] && source <(kubectl completion zsh)" >> ~/.zshrc
排查问题三板斧:
当Pod出现问题时,按顺序执行以下命令,90%的问题都能定位:
- kubectl describe pod <pod-name> – 查看事件(Events),常见于镜像拉取失败、调度失败。
- kubectl logs <pod-name> -n <namespace> – 查看日志,检查应用本身报错。
- kubectl exec -it <pod-name> — /bin/sh – 进入容器,检查网络、文件等运行环境。
结语:
这份手册覆盖了90%的日常K8s运维场景。提议收藏,并结合别名与自动补全使用,将极大提升你的工作效率。
最重大的一点:在生产环境执行删除(delete)或修改(edit)命令前,务必再三确认命名空间和资源名称!
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END




















- 最新
- 最热
只看作者