Networking
如何在單節點 kubernetes 集群上進行從 flannel 到 calico 的實時遷移?
我正在嘗試在 k8s 集群中從法蘭絨遷移到印花布。我能夠在 3 節點集群中成功完成它。從 flannel 到 calico 的實時遷移正在按照文件中的說明進行。
但是根據這個問題,不支持在單節點 k8s 集群上從 flannel 遷移到 calico 。
我必須在單個節點上進行從法蘭絨到印花布的實時遷移,任何有關方法的建議都值得讚賞。
以下是從法蘭絨遷移到印花佈時對我有用的步驟。我遵循了@p1ol 答案中提到的大部分步驟。
- 去除法蘭絨
- 停止立方體
- 關閉ifconfig介面,刪除ip link相關的flannel
- 重啟 Kubelet
- 安裝印花布
Calico 安裝未創建 calico-node pod 並且 calico-kube-controllers-** pod 卡在 pod 初始化或容器創建狀態。
我確實參考了部落格,其中建議為 CIDR 範圍更新 calico yaml,而且我必須按照此處的建議配置 IP_AUTODETECTION_METHOD
最後,我確實重新啟動了我的節點。
正如您已經發現的那樣,不支持將 Flannel 遷移到單節點集群上的 Calico。這是因為 Flannel 遷移控制器需要調度在目前沒有遷移的節點上,這在單節點集群中是不可能的。
這可以通過創建臨時的第二個節點來解決,並在遷移完成後縮減回 1。
其他解決方案是創建一個全新的集群,安裝 Calico,並將資源從舊集群移動到新集群。
作為最後的手段,您可以嘗試手動解除安裝 Flannel,然後在其上安裝 Calico。
**警告:**以下所有內容可能無法按預期工作。Flannel 和 Calico 顯然都不支持這種方式。它可能會損壞,並使您的集群無法使用。首先在測試環境中嘗試這個解決方案,適應你的環境,然後才在產品上嘗試這個。
你已經被警告了。
- 刪除法蘭絨
kubectl delete -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
- SSH 到您的節點
- 停止多維數據集服務
systemctl stop kubelet
systemctl stop containerd
如果用作容器執行時,請停止 containerd 。(如果使用 Docker Engine 則替換為 docker)- 刪除任何 CNI 相關目錄
rm -rf /var/lib/cni rm -rf /run/flannel rm -rf /etc/cni
- 查找任何與 CNI/Flannel 相關的介面,並將其刪除
ip link
對於每個介面,請執行以下操作
ifconfig <name of the interface from ip link> down ip link delete <name of the interface from ip link>
- 重啟容器執行時
- 重新啟動多維數據集
- 像在新集群上一樣安裝 Calico。