溫馨提示×

K8S部署在Debian上的故障排除

小樊
39
2025-10-19 07:08:17
欄目: 智能運維

K8S部署在Debian上的常見故障及排除步驟

1. 系統基礎環境問題

  • 現象:節點無法正常啟動Kubernetes組件、Pod調度失敗或網絡不通。
  • 排查要點
    • 硬件要求:確保節點滿足Kubernetes最低配置(≥2核CPU、≥2GB內存、≥20GB磁盤空間);
    • 系統更新:運行sudo apt update && sudo apt upgrade -y更新系統,避免軟件包沖突;
    • 內核參數:加載必要模塊(sudo modprobe overlay && sudo modprobe br_netfilter),并通過sysctl設置net.bridge.bridge-nf-call-iptables=1、net.ipv4.ip_forward=1(需寫入/etc/sysctl.d/99-kubernetes.conf并執行sysctl -p生效);
    • 關閉Swap:運行sudo swapoff -a臨時關閉,修改/etc/fstab永久禁用(注釋含swap的行)。

2. Kubelet服務異常

  • 現象kubelet服務無法啟動、狀態顯示inactive (dead)或日志報錯(如failed to start container runtime)。
  • 排查步驟
    • 檢查服務狀態systemctl status kubelet(查看是否運行及錯誤信息);
    • 查看詳細日志journalctl -u kubelet -f(跟蹤實時日志,定位具體錯誤,如鏡像拉取失敗、證書問題);
    • 重啟服務systemctl restart kubelet(修復臨時故障)。

3. 節點無法注冊到Master

  • 現象:Worker節點執行kubeadm join時報錯(如token expired、無法獲取ConfigMap、connection refused)。
  • 解決方法
    • 重新生成Token:在Master節點運行kubeadm token create --print-join-command,獲取新的join命令;
    • 驗證Master狀態:確保Master節點kubectl get nodes顯示Ready,且kube-apiserver服務正常(systemctl status kube-apiserver);
    • 檢查網絡連通性:Worker節點能ping通Master節點的IP(尤其是6443端口,用于API Server通信)。

4. Pod狀態異常

  • ErrImagePull(無法拉取鏡像)
    • 原因:鏡像名稱/標簽錯誤、鏡像不存在于倉庫、私有倉庫未配置證書。
    • 解決:檢查Pod YAML中的image字段(如nginx:latest是否正確);若使用私有倉庫,在Worker節點的/etc/docker/certs.d/<registry-domain>/目錄下添加證書,并重啟Docker(systemctl restart docker)。
  • CrashLoopBackOff(容器反復崩潰)
    • 原因:應用啟動失?。ㄈ缍丝跊_突、依賴缺失)、資源不足(內存/CPU超出限制)。
    • 解決:查看Pod日志(kubectl logs <pod-name> -n <namespace>),檢查應用錯誤;調整資源請求/限制(resources.requestsresources.limits)。

5. 網絡插件問題

  • 現象:Pod之間無法通信、Service無法訪問(如ClusterIP無法內網訪問、NodePort無法外網訪問)。
  • 排查步驟
    • 確認插件部署狀態kubectl get pods -n kube-system(檢查Flannel、Calico等插件Pod是否Running);
    • 重新部署插件:刪除現有插件配置(如kubectl delete -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml),再重新應用;
    • 檢查內核模塊:確保br_netfilter已加載(lsmod | grep br_netfilter);
    • 驗證網絡參數sysctl net.bridge.bridge-nf-call-iptables(需為1)。

6. 服務訪問失敗

  • 現象kubectl get svc顯示服務端口正常,但無法通過NodeIP:NodePortClusterIP訪問。
  • 原因及解決
    • 服務類型錯誤ClusterIP僅集群內部可訪問,需改為NodePorttype: NodePort)或LoadBalancer(需云廠商支持);
    • 端口映射錯誤:檢查Service YAML中的ports字段(如targetPort需與應用容器端口一致,port為Service端口,nodePort為可選的外部訪問端口(30000-32767));
    • 防火墻攔截:開放NodePort端口(sudo ufw allow <node-port>)。

7. 證書問題

  • 現象kubectl命令報錯(如x509: certificate signed by unknown authority)、無法訪問API Server。
  • 解決方法
    • 更新證書:若證書過期,在Master節點運行kubeadm certs renew all,然后重啟相關組件(systemctl restart kubelet);
    • 臨時禁用驗證(僅測試環境):使用kubectl --insecure-skip-tls-verify=true命令,或修改~/.kube/config中的insecure-skip-tls-verifytrue(不推薦生產環境)。

8. 資源不足

  • 現象:Pod狀態為Pending(無法調度)、系統頻繁觸發OOM Killer(殺死進程釋放內存)。
  • 排查與解決
    • 查看資源使用kubectl describe node <node-name>(查看節點資源分配情況);kubectl top pod(查看Pod資源占用);
    • 清理磁盤空間:刪除無用文件(如/var/log/下的舊日志),或擴展磁盤容量;
    • 調整資源請求:修改Pod YAML中的resources.requests(如memory: "512Mi"、cpu: "500m"),避免過度申請資源。

9. 內核模塊缺失

  • 現象kubelet日志報錯(如sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables)、網絡插件無法正常工作。
  • 解決步驟
    • 加載模塊sudo modprobe br_netfilter && sudo modprobe overlay;
    • 永久生效:將模塊名添加到/etc/modules-load.d/kubernetes.conf文件中(每行一個模塊),然后運行sudo systemctl restart systemd-modules-load。

10. 版本兼容性問題

  • 現象kubeadm initkubeadm join時報錯(如unsupported Docker version、kubelet版本與kube-apiserver不兼容)。
  • 解決方法
    • 檢查兼容性:參考Kubernetes官方文檔的《Compatibility Matrix》,確保Docker、kubelet、kube-apiserver等組件版本兼容(如Kubernetes v1.28支持Docker v24.0.7及以上);
    • 調整版本:卸載不兼容的組件(如sudo apt remove docker-ce),安裝符合要求的版本。

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