1. 程式人生 > >k8s pod訪問不通外網問題排查

k8s pod訪問不通外網問題排查

環境概況

自建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伺服器的配置問題。

排查過程

kubectl get pod -n kube-system -o wide|grep server-n1

發現該節點上的calico-node狀態異常,即只有1/2 個容器在Running

 

kubectl describe pod -n kube-system calico-node-5txhs

主要異常資訊如下截圖

 

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

&n