从 AWS EKS Autoscaler 工作线程节点中的私有 docker 注册表中提取映像

Jay*_*oni 6 kubernetes docker-registry amazon-eks

我将 AWS EKS 与 Auto Scaler 用于工作节点。我有私人 Artifactory docker 注册表。

现在,为了从私有注册表下载 docker 映像,我阅读了许多文档,包括 kubernetes 文档 - 如何从私有 docker 注册表中提取 docker 映像。

解决方法分三步:

  • 创建kubectl secret包含 docker 注册表凭据的内容
  • 加入"insecure-registries":["privateRegistryAddress:port"]/etc/docker/daemon.json
  • 重启docker服务

我已手动通过 SSH 连接到工作节点并运行第二步和第三步,该步骤暂时有效,但 EKS Auto Scaler 会发现该工作节点是否未在使用中,然后将其终止并根据需要创建新节点,在这个新工作节点中,"insecure-registries":["privateRegistryAddress:port"]其中/etc/docker/daemon.json是未添加,因此 pod 调度失败。

我在这里能想到两种解决方案 -

  • "insecure-registries":["privateRegistryAddress:port"]配置默认包含的 AWS EC2 AMI/etc/docker/daemon.json并在自动缩放器配置中使用该映像
  • 创建具有节点级权限的 pod 来编辑上述文件并重新启动 docker 服务 - 但我怀疑 docker 服务是否重新启动,那么该 pod 本身就会崩溃,以及是否有效

请指教。谢谢。

Jay*_*oni 4

从我提到的第一种方法解决了这个问题。

  • 首先当然是创建kubectl secret登录私人注册表
  • 通过 SSH 连接到 kubernetes 工作节点并["privateRegistryAddress:port"]添加/etc/docker/daemon.json
  • 从该节点创建 AMI 映像
  • 使用新 AMI 更新了 EC2 启动模板并将新模板版本设置为默认值
  • 使用新的启动模板版本更新了 EC2 Auto Scaling 组
  • 杀死以前的工作节点并让自动伸缩组创建新节点

瞧!:)

现在,每当 EKS 使用 Auto Scaling 组增加/减少 EC2 实例时,它们都可以从私有 docker 注册表下载 docker 镜像。