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