溫馨提示×

Kubernetes安裝后如何驗證其運行狀態

小樊
48
2025-09-19 15:40:48
欄目: 編程語言

1. 檢查核心組件狀態

核心組件(API Server、Controller Manager、Scheduler、etcd)是Kubernetes集群的“大腦”,其健康狀態直接決定集群能否正常運行。

  • 命令kubectl get componentstatuses
  • 預期輸出:所有核心組件狀態顯示為Healthy(如scheduler Healthy ok、controller-manager Healthy ok、etcd-0 Healthy {"health":"true"})。若出現UnhealthyUnknown,需檢查對應組件的日志(如journalctl -u kube-apiserver)排查問題。

2. 檢查節點狀態

節點是集群的工作單元,需確保所有節點處于Ready狀態(表示節點與控制平面通信正常,可調度Pod)。

  • 命令kubectl get nodes
  • 預期輸出:所有節點的STATUS列為Ready(如node-1 Ready control-plane 30d v1.27.0、node-2 Ready worker 30d v1.27.0)。若節點狀態為NotReady,可能是kubelet服務異常、網絡斷連或磁盤空間不足。

3. 檢查Pod運行狀態

Pod是Kubernetes的最小調度單元,需確保系統Pod(如CoreDNS、kube-proxy)和業務Pod均處于Running狀態(表示容器正在運行)。

  • 命令kubectl get pods -A-A表示查看所有命名空間)
  • 預期輸出
    • 系統Pod(如kube-system命名空間下的coredns、kube-proxy)狀態為Running,RESTARTS次數為0(如coredns-78fcd69978-ckc9b Running 0 20d);
    • 業務Pod狀態為Running,READY列顯示預期副本數(如nginx-5c689d88bb-abcde Running 1/1 5m)。
      若Pod狀態為Pending(調度失敗,可能因資源不足)、CrashLoopBackOff(應用不斷重啟,可能因鏡像問題或代碼崩潰),需進一步使用kubectl describe pod <pod-name>分析原因。

4. 驗證網絡功能

網絡是集群內Pod通信的基礎,需檢查DNS解析和Pod間通信是否正常。

  • DNS解析檢查
    • 部署一個臨時Pod(如busybox)并測試域名解析:
      kubectl run -it --rm --image=busybox:1.28 busybox --restart=Never -- nslookup kubernetes.default
      
    • 預期輸出:能解析到Kubernetes服務的ClusterIP(如Server: 10.96.0.10,Address: 10.96.0.10,Name: kubernetes.default.svc.cluster.local)。若解析失敗,可能是CoreDNS未正常運行。
  • Pod間通信檢查
    • 創建兩個Pod(如test-pod-1、test-pod-2),進入其中一個Pod并嘗試ping另一個Pod的IP:
      kubectl create deployment test-pod --image=nginx --replicas=2
      kubectl get pods -o wide
      kubectl exec -it test-pod-xxxxx -- /bin/sh
      ping <test-pod-yyyyy的IP>
      
    • 預期結果:能正常ping通(若無法ping通,可能是網絡插件(如Calico、Flannel)未正確部署)。

5. 檢查系統服務狀態

Kubernetes依賴的系統服務(如kubelet、etcd)需正常運行,可通過以下命令檢查:

  • 命令:在每個節點上執行systemctl status kubelet(檢查kubelet服務狀態)、在控制平面節點上執行ETCDCTL_API=3 etcdctl endpoint health(檢查etcd健康狀態)。
  • 預期輸出
    • kubelet服務狀態為active (running);
    • etcd端點返回is healthy: successfully committed proposal。若服務異常,需重啟對應服務(如systemctl restart kubelet)。

6. 部署示例應用驗證

通過部署一個簡單的應用(如Nginx),驗證集群的部署、擴縮容和Service暴露功能:

  • 命令
    kubectl create deployment nginx --image=nginx  # 部署Nginx應用
    kubectl get pods -w  # 查看Pod狀態(等待變為Running)
    kubectl expose deployment nginx --type=NodePort --port=80  # 暴露Service
    kubectl get svc nginx  # 獲取Service的NodePort(如30080)
    
  • 驗證步驟
    • 確認Pod狀態為Running;
    • 在瀏覽器或通過curl訪問<節點IP>:<NodePort>(如http://192.168.1.100:30080),能看到Nginx歡迎頁面。若無法訪問,可能是Service未正確暴露或防火墻攔截。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女