如果你使用的私有的 Docker Registry,你可能需要用用户名密码登录上它。一般用 docker login --username=<username> <registry-address>
来登录,登录完后会在 ~/.docker/config.json
中存放认证信息。
Kubernetes master 在指挥 kubelet 去拉镜像时,也需要用这份认证信息。按 Kubernetes 文档 描述,kubelet 会按这个顺序去拿这个配置:
{--root-dir:-/var/lib/kubelet}/config.json
{cwd of kubelet}/config.json
${HOME}/.docker/config.json
/.docker/config.json
{--root-dir:-/var/lib/kubelet}/.dockercfg
{cwd of kubelet}/.dockercfg
${HOME}/.dockercfg
/.dockercfg
如果你没有配置一个 HOME
环境变量给 kubelet
进程(通过 cat /proc/<pid>/environ
)判断,那么 ${HOME}/.docker/config.json
没有作用。
容器平台在部署 node 节点时,应该需要考虑把镜像仓库的认证信息预先生成好,写到 node 节点机器上。(不确定是否最佳实践)
用 Kubernetes 的 Secret 机制应该也可以实现一样的功能。参考 这里。