kubernetes - 从 AWS EKS Autoscaler 工作程序节点中的私有 Docker 注册表中提取映像
问题描述
我将 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 本身会关闭以及是否有效
请指教。谢谢。
解决方案
从我提到的第一种方法解决了这个问题。
- 首先当然是
kubectl secret
为了登录私有注册表而创建的 - 通过 SSH 连接到 Kubernetes 工作节点并添加
["privateRegistryAddress:port"]
到/etc/docker/daemon.json
- 从该节点创建 AMI 映像
- 使用新 AMI 更新 EC2 启动模板并将新模板版本设置为默认值
- 使用新的启动模板版本更新了 Ec2 Auto Scaling 组
- 杀死以前的工作节点并让自动伸缩组创建新节点
瞧!:)
现在,每当使用 Auto Scaling 组的 EKS 增加/减少 EC2 实例时,他们将能够从私有 Docker 注册表下载 Docker 映像。
推荐阅读
- gitlab - 是否可以让多个 gitlab-runners 都执行相同的作业?
- angular - 解析 http 期间的 Http 失败
- javascript - 当我使用脚本标签时,html() 在 Firefox 中不起作用
- python - pandas.core.base.DataError:没有要聚合的数字类型
- jquery - 勾选另一个复选框时如何勾选一个复选框?复选框是一个数组
- github - 人们是否有任何可能的原因导致人们在 Netlify 上共享我部署的站点,出现“找不到页面”错误?
- python-3.x - 检查日期是否属于python中的给定月份和年份
- typescript - 如果具有泛型参数,如何从类型定义(`.d.ts`)导入接口
- typescript - 从剩余参数推断的条件元组
- ios - React Native iOS starts the development server but never connects and then just crashes