k8s克隆了叢集且在老叢集尚在執行的情況下,新克隆的伺服器開機。導致了叢集的ip一直在跳,一會是老ip一會是新ip,且叢集在rancher上不可訪問,但是在伺服器上仍可使用kubectl命令,就是有點延遲。
表現:檢視到calico node的pod都down了
處理操作1:
使用calicoctl檢視:
安裝calicoctl,透過映象檢視本機calico版本為v3.17.2,將calicoctl移到/usr/local/bin/下
chmod +x /usr/local/bin/calicoctl
編寫calicoctlcfg.yaml
apiVersion: projectcalico.org/v3 kind: CalicoAPIConfig metadata: spec: datastoreType: "kubernetes" kubeconfig: "/root/.kube/config" # 確保這個路徑是正確的
執行apply
kubectl apply -f calicoctlcfg.yaml
#檢視節點資訊
calicoctl get nodes
#獲取 BGP 對等體狀態
calicoctl node status
看到bgp裡都是新伺服器的ip,需要更新節點配置
apiVersion: projectcalico.org/v3 kind: Node metadata: name: <node-name> # 替換為您的節點名稱 spec: bgp: ipv4Address: 192.168.1.100/24 # 替換為新的 BGP IPv4 地址
等都更新完後,在racnher裡叢集狀態轉為正常。但是外部應用訪問服務非常慢。
排查問題,發現是網路的問題,表象是服務不是每個ip+埠都能訪問通的,不同的服務訪問通的ip是不同的。深入檢視發現同一名稱空間內,35 節點的pod與其他節點的pod互相是ping不通的,38和41的在節點上是ping不通其他pod的,將所有的節點都刪除然後重新加入,網路恢復正常。