環境概況
自建k8s集群,主機操作系統ubuntu16.04,k8s版本v1.14, 集群網絡方案calico-3.3.6.
worker節點數50+,均為GPU物理服務器,服務器類型異構,如Nvidia P4/T4/V100等。
異常現象
故障起因是k8s集群新增加了一台worker節點機器server-n1,該機器上帶有8張網卡eth0~eth7,
其中eth0~eth3沒有配置ip地址,eth4~eth7配置了ip地址,默認使用eth4網卡。
調度到server-n1節點上的pod,無法訪問外網。調度到其他node節點上的pod均能正常訪問外網。
根據故障現象,初步確定是server-n1服務器的配置問題。
排查過程
1.kubectl get pod -n kube-system -o wide|grep server-n1
發現該節點上的calico-node狀態異常,即只有1/2 個容器在Running
2.kubectl describe pod -n kube-system calico-node-5txhs
主要異常信息如下截圖
3.kubectl logs -n kube-system calico-node-5txhs
發現calico-node組件自動偵測到的網卡為eth7,而不是默認使用的eth4.
至此已定位到問題原因。
解決方法
由於eth5~eth7網卡實際沒有被使用,關閉eth5~eth7使calico-node偵測到eth4.
1.在/etc/network/interfaces文件內注釋冗余網卡
2.關閉eth5~eth7
ifconfig eth5 down
ifconfig eth6 down
ifconfig eth7 down
ip addr flush eth5
ip addr flush eth6
ip addr flush eth7
3.刪除重建該機器上的calico-node
kubectl delete pod -n kube-system calico-node-5txhs