Foreward
在创建pod时,image是从哪个仓库下载?应该如何指定公司的Regitry?最佳实践是什么?带着这些问题,记录自己的爬坑经历.
镜像建议
- 对每个镜像都指定明确的版本号(不要使用latest这样的版本号),减少去镜像仓库拉取的消耗.(可以学习kube的api,版本为X.Y.Z. X is the major version, Y is the minor version, and Z is the patch version)
使用镜像私仓
使用私仓时,需要配置认证信息.
pod中指定私仓优先级高于node指定私仓.
在node节点中配置(推荐)
- 与在每个pod中使用ImagePullSecrets相比,少了重复的配置代码.
配置认证信息
- docker添加私仓认证信息,可参考这里
一般使用docker时,默认都是从docker hub上拉取镜像.正常拉取是不需要认证信息的,但在上传时需要认证信息.
在每个节点上配置登录认证信息.
1 | # 默认docker hub的地址是:https://index.docker.io/v1 |
认证信息优先级
- {–root-dir:-/var/lib/kubelet}/config.json
默认config.json不存在
- {cwd of kubelet}/config.json
指定kubelet的工作空间路径,这种方式暂不考虑.
- ${HOME}/.docker/config.json
默认config.json是不存在的
- /.docker/config.json
默认该目录不存在
在pod中指定ImagePullSecrets
创建secret
1 | # 实际上在pull镜像时创建一个虚拟的.docker/config.json文件. |
pod中使用imagePulSecrets
1 |
|
以上两种方式,可以结合使用,建议每台node上都先配置认证信息,有需要再使用第二种方式.