我有一个带有两个ASG的EKS设置(v1.16):一个用于计算("c5.9xlarge"),另一个用于gpu ("p3.2xlarge")。两者都配置为Spot并使用desiredCapacity 0进行设置。
gpu按预期工作,并在必要时扩展每个K8S,问题是新创建的gpu实例无法被主服务器识别,并且正在运行的kubectl get nodes不会发出任何信息。我可以看到ec2实例处于Running状态,并且我还可以ssh机器。
我仔细检查了标签和标签,并将它们与“计算”进行了比较。两者的配置几乎是相似的,唯一的区别是gpu节点组有很少的额外标记。
由于我使用的是eksctl工具(v.0.35.0),而计算nodeGroup和gpu nodeGroup基本上是复制和粘贴,所以我不知道问题出在哪里。
UPDATE: 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)?
发布于 2021-05-31 06:44:54
作为一个简单的例子,你可以在eksctl yaml配置文件中使用这个preBootstrapCommands:
- name: test-node-group
preBootstrapCommands:
- "sed -i 's/cgroupDriver:.*/cgroupDriver: cgroupfs/' /etc/eksctl/kubelet.yaml"发布于 2020-12-30 14:48:04
EKS 1.16有一些问题,即使是graviton处理器机器也不会加入集群。要修复此问题,请先尝试升级您的CNI版本。请参考此处的文档:
https://docs.aws.amazon.com/eks/latest/userguide/cni-upgrades.html
如果这不起作用,那么将你的EKS版本升级到最新的可用版本,然后应该可以工作。
发布于 2020-12-31 16:47:46
我发现了问题所在。eksctl (v0.35.0)和AL2-GPU AMI之间似乎不一致。
亚马逊网络服务团队将docker中的控制组更改为"systemd“而不是"cgroup”(github),而我使用的eksctl工具没有吸收这些更改。
临时解决方案是使用preBootstrapCommands编辑/etc/eksctl/kubelet.yaml文件
https://stackoverflow.com/questions/65500605
复制相似问题