Amazon-Web-Services

EKS ARM 節點卡在 NotReady 狀態 - 執行時網路未準備好 cni 配置未初始化

  • June 1, 2021

我有一個名為cluster-main的 EKS 集群 (AWS)正在執行

  • Kubernetes 版本: 1.16
  • 平台版本: ex.4
  • CNI版本v1.6.1

集群中有兩個節點組

這些組中的節點工作正常。

我正在嘗試添加一個由 ARM 實例組成的新節點組

但是,由於以下問題,該組的節點卡在Not Ready狀態,無法創建節點組

Conditions:

  • 所有節點組都有節點 IAM 角色 ARN
  • 所有節點組都是 AWS 託管組。
  • 所有節點組都部署在兩個特定子網(私有)下

當我通過 SSH 連接到 EC2 實例時,我得到以下日誌/var/log/message

1430 cni.go:237] Unable to update cni config: no networks found in /etc/cni/net.d
1430 kubelet.go:2193] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized

我已經確認/etc/cni/net.d目錄確實是空的

我有另一個具有類似特徵的 EKS 集群,其中 ARM 節點組已初始化,沒有任何問題。但是,我發現了兩個不同之處。測試集群使用:

  • 平台版本: ex.5

  • CNI 版本 1.7.5

    • amazon-k8s-cni-init:v1.7.5-eksbuild.1
    • amazon-k8s-cni:v1.7.5-eksbuild.1

有任何想法嗎?

好的 - 正如@thomas 所說,這個問題與 EKS 外掛有關。

就上下文而言,正如我在評論中所說,集群最初是在 1.14 版本中創建的,後來升級到 1.16。

但是,從未升級過aws-node、、kube-proxycoredns附加組件。按照此處的說明進行操作,但問題仍然存在。

我確實注意到的aws-node是仍在使用相同的 CNI 圖像(v1.6.3)

kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2

經過進一步調查,我不得不按照此處的說明手動升級 CNI 版本

最後,我注意到aws-node為我的節點創建了一個 pod arm64- 以前它沒有。但是,對 pod 的活躍度探測失敗了,節點仍然卡在NotReady狀態。因此,我必須按照指南kube-proxy的步驟 (3) 中的說明編輯守護程序集的配置。

引用自:https://serverfault.com/questions/1065211