Kubernetes 高频实操命令手册(必备收藏)

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%的问题都能定位:

  1. kubectl describe pod <pod-name> – 查看事件(Events),常见于镜像拉取失败、调度失败。
  2. kubectl logs <pod-name> -n <namespace> – 查看日志,检查应用本身报错。
  3. kubectl exec -it <pod-name> — /bin/sh – 进入容器,检查网络、文件等运行环境。

结语:
这份手册覆盖了90%的日常K8s运维场景。提议收藏,并结合别名与自动补全使用,将极大提升你的工作效率。

最重大的一点:在生产环境执行删除(delete)或修改(edit)命令前,务必再三确认命名空间和资源名称!

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 共2条

请登录后发表评论