EKS ARM 节点卡在 NotReady 状态 - 运行时网络未就绪,cni 配置未初始化

EKS ARM 节点卡在 NotReady 状态 - 运行时网络未就绪,cni 配置未初始化

我有一个名为的 EKS 集群 (AWS)集群主节点正在运行

  • Kubernetes 版本: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

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

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

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

有任何想法吗?

答案1

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

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

然而,、aws-nodekube-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我的节点上创建了一个 Pod arm64,而之前没有。但是,Pod 的存活探测失败了,节点仍然处于停滞NotReady状态。因此,我不得不kube-proxy按照步骤 (3) 中的描述编辑守护进程集的配置指导。

相关内容