在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安装成功。