在CentOS上進行Kubernetes(k8s)故障排查可以通過以下步驟進行:
首先,使用以下命令檢查集群中各個節點的狀態:
kubectl get nodes
如果某個節點顯示為 NotReady
,則需要進一步查看該節點的詳細信息:
kubectl describe node <node-name>
檢查哪些Pod處于非Running狀態,并查看它們的詳細信息:
kubectl get pods --all-namespaces -o wide
kubectl describe pod <pod-name>
查看服務的狀態和詳細信息:
kubectl get services
kubectl describe service <service-name>
使用 journalctl
查看Kubernetes組件的日志:
journalctl -xe
也可以查看特定組件的日志,例如kubelet:
journalctl -u kubelet
測試節點之間的網絡連接,可以使用ping命令:
ping <node-ip>
NPD是一個開源工具,用于檢測節點級別的異常狀態??梢酝ㄟ^以下步驟安裝和配置NPD:
helm repo add deliveryhero https://charts.deliveryhero.io/helm
helm install --generate-name deliveryhero/node-problem-detector
創建 node-problem-detector-config.yaml
和 node-problem-detector.yaml
配置文件,并根據需要進行調整。
在測試節點上注入測試日志并查看節點事件:
sudo sh -c "echo 'kernel: BUG: unable to handle kernel NULL pointer dereference at TESTING' >> /dev/kmsg"
kubectl describe node <node-name>
KubeNurse是一個用于監控Kubernetes集群網絡的工具,可以通過以下命令安裝和配置:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/kube-state-metrics/master/deploy/recommended.yaml
使用以下命令檢查系統的內存、CPU和磁盤使用情況:
free -g
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
dd if=/dev/zero of=/tmp/testfile bs=4K count=512 conv=fdatasync oflag=direct,nonblock
根據具體的錯誤信息,采取相應的解決措施。例如,如果遇到iptables規則失效的問題,可以修改iptables模式:
update-alternatives --set iptables /usr/sbin/iptables-legacy