下面给你一套实用、可操作的验证步骤,用于确认 CentOS 上 Kubernetes(K8s)是否部署成功并正常运行。适用于 kubeadm 部署方式(最常见)。
kubectl get nodes
✅ 正常示例:
NAME STATUS ROLES AGE VERSION
master01 Ready master 10m v1.28.2
node01 Ready <none> 8m v1.28.2
❌ 常见问题:
NotReady → 网络插件未部署或异常systemctl status kubelet
✅ 期望:
Active: active (running)
如未启动:
journalctl -u kubelet -f
kubectl get componentstatuses
或(新版本推荐):
kubectl get --raw /healthz
✅ 返回:
ok
kubectl get pods -n kube-system
✅ 关键 Pod(必须 Running):
kube-apiserverkube-controller-managerkube-scheduleretcdcorednskube-proxy如有 CrashLoopBackOff,查看日志:
kubectl logs <pod-name> -n kube-system
常见插件:
查看:
kubectl get pods -n kube-system
✅ 例如 Calico:
calico-node-xxx Running
calico-kube-controllers Running
kubectl get pods -n kube-system -l k8s-app=kube-dns
测试 DNS:
kubectl run test --image=busybox --rm -it --restart=Never -- nslookup kubernetes
✅ 返回 IP 即 DNS 正常。
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
查看:
kubectl get pods
kubectl get svc
访问:
curl http://<节点IP>:<NodePort>
✅ 返回 nginx 欢迎页即成功。
kubectl cluster-info
✅ 示例:
Kubernetes control plane is running at https://192.168.1.10:6443
CoreDNS is running
kubectl config view
确认:
clusterusercontextjournalctl -u kubelet -f
kubectl describe node <node-name>
kubectl describe pod <pod-name>
常见原因:
kubectl get nodes
kubectl get pods -A
kubectl cluster-info
systemctl status kubelet
你可以直接贴出:
kubectl get nodes 输出kubectl get pods -A 输出我可以帮你 精确判断是哪一步失败了 ✅