跳到主要内容

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 状态为 PendingImagePullBackOffCrashLoopBackOff 时,首先使用 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>