Kubernetes 运维常用命令速查
在日常 Kubernetes (K8s) 集群运维中,熟练掌握 kubectl 命令行工具是保障工作效率的关键。本文整理了最常用的 K8s 诊断与运维命令。
1. 资源状态查看
获取集群节点状态
# 查看所有节点列表及其状态
kubectl get nodes -o wide
# 查看节点的详细资源占用(CPU/内存)
kubectl top nodes
查看 Pod 状态
# 查看指定命名空间 (Namespace) 的 Pods 状态
kubectl get pods -n kube-system
# 查看所有命名空间的 Pods,并显示其宿主机 IP
kubectl get pods -A -o wide
# 实时查看 Pod 状态变化
kubectl get pods -n default -w
2. 故障诊断与日志分析
查看资源详细信息
当 Pod 状态为 Pending、ImagePullBackOff 或 CrashLoopBackOff 时,首先使用 describe 命令查看其事件(Events)。
kubectl describe pod <pod-name> -n <namespace>
查看容器日志
# 查看 Pod 中单容器的日志
kubectl logs <pod-name> -n <namespace>
# 实时滚动查看最近 100 行日志
kubectl logs -f --tail=100 <pod-name> -n <namespace>
# 查看多容器 Pod 中特定容器的日志
kubectl logs <pod-name> -c <container-name> -n <namespace>
# 查看已崩溃并重启的容器的上一次运行日志
kubectl logs <pod-name> -p -n <namespace>
3. 运维排排查与调试
进入容器交互式终端
kubectl exec -it <pod-name> -n <namespace> -- /bin/bash
临时转发本地端口
当需要临时访问 K8s 集群内的内部服务(如 Redis、MySQL、未暴露的 Web 服务)时,可以使用端口转发。
# 将本地 8080 端口转发到集群中 my-service 服务的 80 端口
kubectl port-forward svc/my-service 8080:80 -n default
节点的泄洪与恢复(Drain & Cordon)
在进行物理节点维护或升级时,需要安全地驱逐其上的 Pod。
# 标记节点为不可调度状态(阻止新 Pod 调度上去)
kubectl cordon <node-name>
# 安全驱逐该节点上的所有运行中 Pod
kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data
# 维护完成后,恢复节点的可调度状态
kubectl uncordon <node-name>
4. 资源配置修改
在线编辑资源配置
kubectl edit deployment/<deployment-name> -n <namespace>
快速重启应用(滚动更新)
kubectl rollout restart deployment/<deployment-name> -n <namespace>