在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