Amazon-Web-Services
EKS ARM 節點卡在 NotReady 狀態 - 執行時網路未準備好 cni 配置未初始化
我有一個名為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-proxy
和coredns
附加組件。按照此處的說明進行操作,但問題仍然存在。我確實注意到的
aws-node
是仍在使用相同的 CNI 圖像(v1.6.3)kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2
經過進一步調查,我不得不按照此處的說明手動升級 CNI 版本
最後,我注意到
aws-node
為我的節點創建了一個 podarm64
- 以前它沒有。但是,對 pod 的活躍度探測失敗了,節點仍然卡在NotReady
狀態。因此,我必須按照本指南kube-proxy
的步驟 (3) 中的說明編輯守護程序集的配置。