在CentOS上安装Kubernetes(K8s)后,需通过组件状态检查、节点就绪验证、Pod与服务功能测试三大维度确认安装是否成功。以下是具体操作及说明:
确保kubelet
(节点代理)、kube-apiserver
(集群API入口)、etcd
(分布式键值存储)等核心服务正在运行,这是K8s正常工作的基础。
systemctl status kubelet # 应显示"Active: active (running)"
systemctl status kube-apiserver # 主节点需运行,显示"Active: active (running)"
systemctl status etcd # 主节点需运行,显示"Active: active (running)"
若服务未启动,可通过systemctl start <服务名>
启动,并用journalctl -u <服务名>
查看日志排查问题。
使用kubectl
命令查看集群中所有节点的状态,所有节点必须显示为"Ready"(表示节点已成功加入集群并可接收工作负载)。
kubectl get nodes
预期输出示例:
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane 10m v1.28.2
k8s-node1 Ready <none> 5m v1.28.2
若节点状态为"NotReady",需检查节点间网络连通性、防火墙设置(需放行K8s默认端口,如6443、10250等)或kubelet
日志(journalctl -u kubelet
)。
kube-system
命名空间包含K8s核心组件(如CoreDNS、kube-proxy、Calico等),这些Pod的正常运行是集群功能完整的前提。
kubectl get pods -n kube-system
预期输出示例(所有Pod状态应为"Running"):
NAME READY STATUS RESTARTS AGE
coredns-5dd5756b68-abcde 1/1 Running 0 8m
kube-apiserver-k8s-master 1/1 Running 0 10m
kube-controller-manager-k8s-master 1/1 Running 0 10m
kube-proxy-xyz123 1/1 Running 0 8m
kube-scheduler-k8s-master 1/1 Running 0 10m
若有Pod处于"Pending"、"CrashLoopBackOff"等异常状态,需通过kubectl describe pod <pod名> -n kube-system
查看详情,常见原因包括网络插件未安装、资源不足等。
创建一个简单的Nginx Pod,验证K8s是否能正常调度、启动容器:
kubectl run nginx --image=nginx --port=80 --restart=Never # 创建单次运行的Nginx Pod
kubectl get pods # 检查Pod状态,应为"Running"
预期输出:
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 2m
进一步验证Pod是否可访问:
kubectl port-forward nginx 8080:80 # 将Pod的80端口映射到本地的8080端口
curl http://localhost:8080 # 应返回Nginx默认页面的HTML内容
若无法访问,需检查Pod的日志(kubectl logs nginx
)或节点网络配置。
创建一个NodePort类型的Service,暴露Nginx服务到集群外部,验证Service是否能正确路由流量:
kubectl create deployment my-nginx --image=nginx --port=80 # 创建Deployment
kubectl expose deployment my-nginx --type=NodePort --port=80 # 暴露为NodePort Service
kubectl get svc # 查看Service的外部端口(如"30080:80/TCP")
预期输出:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-nginx NodePort 10.96.123.45 <none> 80:30080/TCP 1m
通过任意节点的IP和外部端口访问Nginx:
curl http://<节点IP>:30080 # 应返回Nginx默认页面
若无法访问,需检查Service的Endpoints(kubectl describe svc my-nginx
)是否包含正常运行的Pod IP。
通过以上步骤逐一验证,若所有检查项均符合预期(节点Ready、Pod运行正常、服务可访问),则说明CentOS上的K8s安装成功。