EKS ARM 节点陷入未就绪状态 - 运行时网络未就绪 cni 配置未初始化

arg*_*eli 5 amazon-web-services kubernetes amazon-eks

我有一个名为cluster-main的 EKS 集群 (AWS)正在运行

  • 库伯内特版本: 1.16
  • 平台版本: eks.4
  • CNI版本v1.6.1

集群中有两个节点组

集群名称 实例类型 AMI类型
通用节点组 t3a.中 AL2_x86_64
内存节点组 r5a.大号 AL2_x86_64

这些组中的节点工作正常。

我正在尝试添加一个由 ARM 实例组成的新节点组

集群名称 实例类型 AMI类型
cpu 节点组 c6g.xlarge AL2_ARM_64

但由于以下问题,该组的节点陷入Not Ready状态,无法创建节点组

Conditions:

类型 地位 最后心跳时间 最后转换时间 原因 信息
准备好 错误的 2021 年 5 月 31 日星期一 08:40:22 -0400 2021 年 5 月 31 日星期一 08:38:21 -0400 Kubelet未就绪 运行时网络未准备好:NetworkReady=false 原因:NetworkPluginNotReady 消息:docker:网络插件未准备好:cni 配置未初始化
  • 所有节点组都有节点 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
Run Code Online (Sandbox Code Playgroud)

我已经确认该/etc/cni/net.d目录确实是空的

我有另一个具有类似特征的 EKS 集群,其中 ARM 节点组的初始化没有任何问题。然而,我发现了两个不同之处。测试集群使用:

  • 平台版本: eks.5
  • CNI版本 1.7.5
    • 亚马逊-k8s-cni-init:v1.7.5-eksbuild.1
    • 亚马逊-k8s-cni:v1.7.5-eksbuild.1

有任何想法吗?

arg*_*eli 4

好的 - 正如 @thomas 所说,该问题与 EKS 插件有关。

对于上下文,正如我在评论中所说,集群最初是在 1.14 版本创建的,后来升级到 1.16。

然而,aws-nodekube-proxycoredns附加组件从未升级。按照此处的说明进行操作,但问题仍然存在。

但我注意到的是,aws-node仍然使用相同的 CNI 映像 (v1.6.3)

kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2
Run Code Online (Sandbox Code Playgroud)

经过进一步调查,我必须按照此处的说明手动升级 CNI 版本

最后,我注意到aws-node为我的节点创建了一个 pod arm64- 以前没有。然而,Pod 的活性探测失败,节点仍停留在NotReady状态。因此,我必须kube-proxy按照指南的步骤 (3) 中所述编辑守护程序集的配置。