实用百科指南
霓虹主题四 · 更硬核的阅读氛围

Kubernetes集群常用命令

发布时间:2025-12-14 07:16:02 阅读:253 次

查看集群状态和节点信息

当你发现应用无法启动或调度异常时,第一反应应该是检查集群整体是否健康。使用 kubectl get nodes 能快速列出所有节点及其状态。

kubectl get nodes

输出中如果看到某个节点状态不是 Ready,那问题可能出在 kubelet 或网络插件上。这时候可以进一步查看节点详细信息:

kubectl describe node <node-name>

这个命令会显示资源使用情况、条件状态以及最近的事件,比如内存不足或磁盘压力,这些都可能导致 Pod 被驱逐。

排查Pod问题

服务访问不了?先查 Pod。用下面这条命令查看命名空间下的所有 Pod:

kubectl get pods -n <namespace>

如果看到 Pod 状态是 CrashLoopBackOff,说明容器启动后很快崩溃。这时候得看日志:

kubectl logs <pod-name> -n <namespace>

如果是多容器 Pod,记得指定容器名:

kubectl logs <pod-name> -c <container-name> -n <namespace>

如果 Pod 还没成功创建,可以用 describe 查原因:

kubectl describe pod <pod-name> -n <namespace>

这里经常能看到拉取镜像失败、配置挂载错误或者资源限制过严等提示。

进入容器调试

有些问题光看日志不够,比如环境变量对不对、配置文件生没生成。这时候进容器里看看最直接:

kubectl exec -it <pod-name> -n <namespace> -- sh

如果容器里没有 sh,试试 bash:

kubectl exec -it <pod-name> -n <namespace> -- bash

进去之后可以查目录结构、测试网络连通性,甚至手动运行启动命令看报错。

检查服务和服务发现

明明 Pod 正常,但服务访问不了?可能是 Service 配置没对上。先看服务有没有正确指向 Pod:

kubectl get svc <service-name> -n <namespace>

重点关注 ClusterIP 和端口映射。然后查对应的 Endpoints:

kubectl get endpoints <service-name> -n <namespace>

如果 Endpoints 为空,说明标签选择器不匹配,去检查 Pod 的 label 是否和 Service 的 selector 一致。

查看部署和副本集

Deployment 控制着应用的期望状态。如果副本数不对,或者更新卡住,可以直接看它的状态:

kubectl get deploy <deployment-name> -n <namespace>

再结合 describe 看是否有滚动更新失败:

kubectl describe deploy <deployment-name> -n <namespace>

有时候是因为镜像不存在或资源不足导致新版本起不来。

临时排错工具 Pod

线上突然断网,怀疑是 DNS 有问题?可以起一个临时 Pod 来测试:

kubectl run debug --image=busybox:1.35 -it --rm -- sh

进到容器里用 nslookup 或 wget 测试服务域名,能快速判断是不是集群内部网络出了问题。用完自动清理,不会留下残留。

查看资源配置和限制

Pod 总被杀掉?可能是触发了资源限制。查看 Pod 的资源配置:

kubectl get pod <pod-name> -n <namespace> -o yaml | grep -A 5 resources

如果 limits 设置得太低,比如内存只有 128Mi,而应用实际需要更多,就会被 OOMKilled。调整 deployment 中的 resource 配置就能解决。