kubernetes flannel 網卡綁定錯誤,故障排查


kubernetes 新加了個node,狀態Ready,但調度過去的任務,都執行異常

查看異常節點日志

`Error adding net work: open run/flannel/subnet.env no such file or directory`

flannel 有問題

環境里flannel也是在容器里啟動的,查看flannel,果然新節點的flannel服務沒有起來

kbs get pods
kube-flannel-ds-28rh8 0/1 CrashLoopBackOff 7 1h

追查flannel啟動日志

kbs logs --tail 10 -f kube-flannel-ds-28rh8
I1213 07:44:58.471264 1 main.go:201] Could not find valid interface matching en1: failed to find IPv4 address for interface en1
E1213 07:44:58.471366 1 main.go:225] Failed to find interface to use that matches the interfaces and/or regexes provided

interface en1 網卡問題

ifcofing 查看

原來這個節點的ip綁在en2上

再看其他節點運行正常的flannel,也是指向的en1

/opt/bin/flanneld --ip-masq --kube-subnet-mgr --iface=en1

問題已經定位到

k8s集群原來機器的ip都在en1上,flannel節點啟動設置的網卡都在en1,新加的這台節點ip卻在en2上,以en1啟動則失敗

查看flannel的配置
kubectl -n kube-system get ds kube-flannel-ds -o yaml
...
containers:
- args:
- --ip-masq
- --kube-subnet-mgr
- --iface=en1
...
果然這里也是en1

運維比較給力,10分就換好了網卡,服務正常恢復

如果無法更換網卡則需改個iface=en1這個參數

flannel如果在宿主機上,改宿主機的設置即可,但這里的flannel都是在容器內啟動的

為了通用把
--iface=en1
改為(192.168.1.255是子網綁定的ip)
--iface=$(ip add |grep 192.168.1.255 |awk '{print $7}')

需要改的地方就是如何把有效的網卡拿出來

但這個方式通用性還是不太好

更復雜的通用辦法就是寫個復雜的sh,加入sh打成鏡象或把sh映射到容器里,用sh替換啟動容器的命令


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM