***本文以flannel這個CNI套件為例***
重新安裝步驟:
刪除
kubectl delete -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
徹底刪除(真的要徹底刪除時才執行)
#關閉與刪除網卡
ifconfig cni0 down
ip link delete cni0
ifconfig flannel.1 down
ip link delete flannel.1
#刪除殘留文件
rm -rf /var/lib/cni
rm -rf /etc/cni/net.d
#重新開機
sudo reboot 0
再次安裝
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
查看flannel的pod運行狀況
kubectl get pods -n kube-flannel -o wide |grep “flannel”
查看部署方式
kubectl get daemonset -n kube-flannel
查看配置文件
kubectl get configmap -n kube-flannel
查看配置文件內容
#可得知網段Network:10.244.0.0/16這個宣告在你apply安裝的yaml裡
kubectl get configmap kube-flannel-cfg -o json -n kube-flannel
進一步排查CIDR網段與CNI套件
sudo cat /etc/kubernetes/manifests/kube-controller-manager.yaml
查看當前CIDR
發現不是預設的10.244而是10.124.16
定義kube-flannel.yml並配置(編輯 kube-flannel.yml)
將網段設置為指定的,例如:10.124.16.0/24
再次套用 kubectl apply -f kube-flannel.yml
若子節點沒吃到
手動去子節點配置CIDR
kubectl patch node slave-node-1 -p '{"spec":{"podCIDR":"172.168.10.0/24"}}'
如果部署服務時遇到Pod卡在Container Creating
關鍵字:Kubernetes stuck on ContainerCreating
查看報錯訊息
kubectl get pods
kubectl describe pods <pod name>
並且報錯為:failed to set bridge addr: “cni0” already has an IP address different from 10.244.1.1/24"
查看會發現CNI0網段與Flannel網段並未對齊
ifconfig
此時需要刪除網卡讓它重建
#關閉CNI0與Flannel產生的網卡
ip link set cni0 down && ip link set flannel.1 down
#刪除CNI0與Flannel產生的網卡
ip link delete cni0 && ip link delete flannel.1
#重新開機
sudo reboot 0
之後再重新部署服務就可以成功創建了!