Kubernetes 从AWS EKS Autoscaler工作节点中的私有docker注册表中提取图像

Kubernetes 从AWS EKS Autoscaler工作节点中的私有docker注册表中提取图像,kubernetes,docker-registry,amazon-eks,Kubernetes,Docker Registry,Amazon Eks,我正在为工作节点使用AWS EKS和自动定标器。我有私人的Artifactory docker注册表 现在为了从private registry下载docker图像,我阅读了很多文档,包括kubernetes docs for-how to pull docker image from private docker registry 解决方案中有三个步骤: 创建包含docker注册表凭据的kubectl机密 在/etc/docker/daemon.json 重新启动docker服务 我已经手

我正在为工作节点使用AWS EKS和自动定标器。我有私人的Artifactory docker注册表

现在为了从private registry下载docker图像,我阅读了很多文档,包括kubernetes docs for-how to pull docker image from private docker registry

解决方案中有三个步骤:

  • 创建包含docker注册表凭据的kubectl机密
  • /etc/docker/daemon.json
  • 重新启动docker服务
我已经手动SSH进入工作节点,并运行了第2步和第3步,这对临时节点有效,但EKS Auto Scaler发现如果该工作节点未被使用,则根据需要杀死它并创建一个新的工作节点,在这个新的工作节点中
“不安全的注册表”:
/etc/docker/daemon.json
中没有添加[/privateRegistryAddress:port]
,由于pod调度失败

这里我可以想到两种解决方案-

  • /etc/docker/daemon.json
    中配置AWS EC2 AMI,该AMI包含
    “不安全注册表”:[“privateRegistryAddress:port”]
    默认值,并在自动定标器配置中使用该映像
  • 创建具有节点级权限的pod,以编辑所提到的文件并重新启动docker服务-但我怀疑docker服务是否重新启动,那么pod本身是否会停止,以及这是否有效

请告知。谢谢。

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

  • 当然,首先创建
    kubectl secret
    登录到私有注册表
  • SSHed进入kubernetes工作节点,并在
    /etc/docker/daemon.json
    中添加
    [“privateRegistryAddress:port”]
  • 已从该节点创建AMI映像
  • 使用新的AMI更新了EC2启动模板,并将新模板版本设置为默认版本
  • 使用新的启动模板版本更新了Ec2自动缩放组
  • 终止以前的工作节点,并让自动缩放组创建新节点
瞧!!:)


现在,每当EK使用自动缩放组增加/减少EC2实例时,他们都可以从私有docker注册表下载docker映像。

我个人使用不同的方法来提取私有映像。我正在使用secret regcred,然后您在pod或部署规范中指定imagePullSecrets。在@marcincuber中的完整描述感谢您的评论。是的,我明白了,我只遵循相同的文件,创建了秘密并添加到pod中。但它仍然不起作用,我们必须在
/etc/docker/daemon.json
中添加
[“privateRegistryAddress:port”]
,然后重新启动docker服务,我不想每次都这样做,因为我的工作节点会保留更改。我在寻找如何实现自动化。