關於kubesphere集群calico網絡組件報錯的修復


最近公司的項目用到了Kubesphere,於是自己先在虛擬機上測試了一番,遇到了很多的問題,現將遇到的有關calico的問題記錄一下
上一篇介紹了如何離線安裝kubesphere v3.0,安裝之后我發現在后台的集群管理界面看不到集群節點的監控數據:

於是我get pod查看了一下狀態,發現其中calico組件沒有跑起來:

然后我在通過kubectl describe命令對宕機的calico pod進行查看,發現calico establish with的ip與我的節點地址不同,這里我的節點地址都是192網段的,而這個是172網段,顯然calico這個要建立通道的網卡存在錯誤:

於是我ifconfig查看了一下,發現存在一個虛擬網卡和這個ip對應:

我摸不到頭腦於是上網查到了一篇文章和我的情況有些類似,也是calico和其他的虛擬網卡建立通道報錯:

原因就是:calico沒有發現實node節點實際的網卡名稱

產生的緣由和解決方法

調整calicao的網絡插件的網卡發現機制,修改IP_AUTODETECTION_METHOD對應的value值。下載的官方提供的yaml文件中,ip識別策略(IPDETECTMETHOD)沒有配置,即默認為first-found,這會導致一個網絡異常的ip作為nodeIP被注冊,從而影響node之間的網絡連接。可以修改成can-reach或者interface的策略,嘗試連接某一個Ready的node的IP,以此選擇出正確的IP

修改calicao的yaml文件,添加兩行配置
- name: IP_AUTODETECTION_METHOD
value: "interface=eth1" # 根據實際網卡名稱配置

[root@k8s-master yaml]# vim calico.yaml
...(3546行)

            #Cluster type to identify the deployment type
            - name: CLUSTER_TYPE
              value: "k8s,bgp"
            #新添加的配置
            - name: IP_AUTODETECTION_METHOD
              value: "interface=eth1"
            # Auto-detect the BGP IP address.
            - name: IP
              value: "autodetect"
            # Enable IPIP
            - name: CALICO_IPV4POOL_IPIP
              value: "Always"
            # Enable or Disable VXLAN on the default IP pool.
            - name: CALICO_IPV4POOL_VXLAN
              value: "Never"

重新構建

kubectl apply -f calico.yaml
以上是比較通用的解決方法
而我因為是之前將harbor和master放在了一台虛擬機上,所有這台機器上存在一個當初創建harbor的虛擬網卡,而calico將這個網卡認作了要建立通道的網卡,因此出現了這個問題,於是我將harbor轉移到了其他機器上,問題就很好的解決了


免責聲明!

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



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