K8S 实用命令
💡 提示:文中出现的
<namespace>为命名空间占位符,请根据实际情况替换(如default,prod等)。
1. 资源监控 (Monitoring)
查看资源占用 (Top)
查看 Pod 或 Node 的 CPU/内存 使用情况(需要安装 Metrics Server)。
shell
# 查看指定命名空间 Pod 资源
kubectl top pods -n <namespace>
# 查看集群所有节点资源
kubectl top nodes查看 Pod 分布 (Get)
查看 Pod 运行在哪个宿主机节点上。
shell
# 查看所有命名空间的 Pod 分布
kubectl get pods -A -o wide | grep <keyword>
# 查看指定命名空间
kubectl get pods -n <namespace> -o wide查看集群事件 (Events)
排查 Pod 调度失败、镜像拉取错误等问题。
shell
# 按时间排序查看最近事件
kubectl get events -n <namespace> --sort-by=.metadata.creationTimestamp2. 故障排查 (Troubleshooting)
查看日志 (Logs)
这是最常用的排查命令。
shell
# 查看实时日志 (类似 tail -f)
kubectl logs -f <pod-name> -n <namespace>
# 查看最近 100 行
kubectl logs --tail=100 -f <pod-name> -n <namespace>
# 如果 Pod 有多个容器 (如包含 Istio sidecar),需要用 -c 指定容器名
kubectl logs <pod-name> -c <container-name> -n <namespace>查看详细信息 (Describe)
当 Pod 状态异常(如 Pending, CrashLoopBackOff)时,使用此命令查看具体原因。
shell
kubectl describe pod <pod-name> -n <namespace>进入容器 (Exec)
shell
# 进入容器执行 sh 或 bash
kubectl exec -it <pod-name> -n <namespace> -- sh3. 应用管理 (Management)
优雅重启 (Rollout Restart)
推荐:使用 Deployment 进行滚动重启,无需删除 Pod,不中断服务。
shell
# 重启指定 Deployment
kubectl rollout restart deployment <deployment-name> -n <namespace>
# 监视滚动更新状态
kubectl rollout status deployment <deployment-name> -n <namespace>编辑配置 (Edit)
直接在线编辑资源配置(仅建议临时调试使用)。
shell
kubectl edit deployment <deployment-name> -n <namespace>
# 保存退出后,K8s 会自动触发滚动更新扩缩容 (Scale)
快速调整副本数量。
shell
kubectl scale deployment <deployment-name> --replicas=3 -n <namespace>强制重启 (Delete Pod)
注意:这是通过删除 Pod 触发重建来从启,生产环境建议使用 rollout restart。
shell
# 强制删除 Pod (立即终止)
kubectl delete pod <pod-name> -n <namespace> --force --grace-period=04. 进阶查询 (Advanced)
标签过滤与排序
shell
# 示例:
# -l level: 筛选包含 label 为 'level' 的 Pod
# --sort-by: 根据 label 值排序
# -o custom-columns: 自定义输出列
kubectl get pods -n <namespace> -l level --sort-by=.metadata.labels.level -o custom-columns="命名空间:metadata.namespace,POD名称:metadata.name,级别:metadata.labels.level"查看资源配置 (Request/Limit)
快速查看 Pod 的 CPU/内存 申请和限制值。
shell
kubectl get pods -n <namespace> -l level=primary -o custom-columns="POD名称:metadata.name,CPU请求:spec.containers[0].resources.requests.cpu,CPU限制:spec.containers[0].resources.limits.cpu,内存请求:spec.containers[0].resources.requests.memory,内存限制:spec.containers[0].resources.limits.memory"