k8s克隆節點引起的系統崩潰問題

潇潇暮鱼鱼發表於2024-10-14

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的,將所有的節點都刪除然後重新加入,網路恢復正常。

相關文章