在CentOS上安装Kubernetes(k8s)后,需通过组件状态、节点与Pod状态、网络功能、服务可用性及日志监控等多维度验证安装效果,确保集群能正常运行容器化应用。
首先确认Kubernetes控制平面的核心组件(如kube-apiserver、kube-controller-manager、kube-scheduler、etcd)是否正常运行:
kubectl查看组件状态,所有组件应显示为Healthy。kubectl get componentstatuses
systemctl检查kubelet、kube-proxy等服务是否处于运行状态(Active: active (running))。systemctl status kubelet kube-proxy etcd # etcd仅在主节点运行
若组件状态异常,需查看对应日志定位问题(如journalctl -u kubelet -f)。节点是Kubernetes集群的基础,需确保所有节点(主节点+工作节点)已成功加入并处于可用状态:
kubectl get nodes查看节点列表,所有节点的STATUS列应为Ready。kubectl get nodes
kubectl top nodes查看节点CPU、内存使用率,建议占用率低于70%(避免资源不足导致Pod调度失败)。Pod是Kubernetes的最小调度单元,需确认系统Pod(尤其是kube-system命名空间下的核心Pod)是否正常运行:
kubectl get pods --all-namespaces查看所有Pod状态,正常Pod的STATUS应为Running,且无Error、CrashLoopBackOff等异常。kubectl get pods -n kube-system # 重点检查kube-system命名空间的Pod
kubectl describe pod <pod-name>查看详细事件(如镜像拉取失败、资源不足),或通过kubectl logs <pod-name>查看容器日志。Kubernetes的网络功能需确保Pod、Service之间能正常通信:
kubectl create deployment nginx --image=nginx # 创建Nginx Deployment
kubectl expose deployment nginx --type=NodePort --port=80 # 暴露为NodePort类型Service
kubectl get pods -o wide # 确认Pod状态为Running,并记录其IP
kubectl exec -it <nginx-pod-name> -- curl http://localhost # 进入Pod测试内部访问
NodePort类型的Service,在集群外访问Nginx服务(替换<node-ip>为节点IP,<node-port>为Service的NodePort):kubectl get svc nginx # 获取Service的NodePort
curl <node-ip>:<node-port> # 浏览器或命令行访问,应看到Nginx默认页面
若网络不通,需检查CNI插件(如Calico、Flannel)的Pod状态(kubectl get pods -n kube-system)及防火墙规则(确保6443、10250等端口开放)。确保集群具备基本的自动化运维能力:
kubectl scale deployment nginx --replicas=3 # 扩缩容命令
kubectl get pods # 确认Pod数量变为3
nslookup命令验证域名解析是否正常(kubernetes是集群内置的测试域名)。kubectl run -it --rm --image=busybox:1.28 busybox --restart=Never -- nslookup kubernetes
若解析失败,需检查CoreDNS Pod状态及配置。journalctl查看kubelet、kube-proxy等服务的日志,定位具体错误(如journalctl -u kubelet -f实时查看kubelet日志)。通过以上步骤,可全面检查CentOS上Kubernetes的安装状态,确保集群具备稳定运行容器化应用的能力。若某一步骤出现问题,需根据错误信息针对性解决(如节点未就绪需检查kubelet服务,Pod无法调度需检查资源或网络插件)。