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