0

我有一个带有 2 个 ASG 的 EKS 设置(v1.16):一个用于计算(“c5.9xlarge”),另一个用于 gpu(“p3.2xlarge”)。两者都配置为 Spot 并设置为 desiredCapacity 0。

K8S CA 按预期工作并在必要时横向扩展每个 ASG,问题是新创建的 gpu 实例无法被 master 识别并且运行时kubectl get nodes什么也不会发出。我可以看到 ec2 实例处于运行状态,我也可以 ssh 机器。

我仔细检查了标签和标签,并将它们与“计算”进行了比较。两者的配置几乎相似,唯一的区别是 gpu 节点组几乎没有额外的标签。

由于我使用的是 eksctl 工具(v.0.35.0)并且计算 nodeGroup 与 gpu nodeGroup 基本上是复制和粘贴,所以我无法弄清楚可能是什么问题。

更新:ssh 实例我可以看到以下错误(/var/log/messages)

failed to run Kubelet: misconfiguration: kubelet cgroup driver: "systemd" is different from docker cgroup driver: "cgroupfs"

kubelet 服务崩溃了。

我的 GPU 是否可能使用错误的 AMI(amazon-eks-gpu-node-1.18-v20201211)?

4

3 回答 3

1

简单来说,您可以在 eksctl yaml 配置文件中使用这个 preBootstrapCommands:

- name: test-node-group
  preBootstrapCommands: 
   - "sed -i 's/cgroupDriver:.*/cgroupDriver: cgroupfs/' /etc/eksctl/kubelet.yaml"
于 2021-05-30T22:44:53.637 回答
0

我发现了这个问题。eksctl (v0.35.0) 和 AL2-GPU AMI 之间似乎没有对齐。

AWS 团队将 docker 中的控制组更改为“systemd”而不是“cgroup”(github),而我使用的 eksctl 工具没有吸收这些更改。

一个临时解决方案是使用编辑 /etc/eksctl/kubelet.yaml 文件preBootstrapCommands

于 2020-12-31T08:47:46.357 回答
0

EKS 1.16 存在一些问题,即使是引力子处理器机器也不会加入集群。要先修复它,请尝试升级您的 CNI 版本。请参阅此处的文档:

https://docs.aws.amazon.com/eks/latest/userguide/cni-upgrades.html

如果这不起作用,则将您的 EKS 版本升级到最新的可用版本,然后应该可以工作。

于 2020-12-30T06:48:04.453 回答