kubernetes 拉取harbor私有仓库镜像

原创
2019/05/09 16:47
阅读数 2.4K

愈来越多的企业和团体都有自己的私有仓库,但是在kubernetes中部署时,拉取私有仓库的私有镜像会出现拉取失败的问题。本文主要讲解如果解决这个问题。

HTTPS支持

如果是公开认证的证书,请忽略本步骤;如果是自生成的证书,需要配置docker。

在kubernetes所有节点中,配置docker,添加证书。

/etc/docker/certs.d文件夹下,创建以私有仓库域名为名字的文件夹,并将私有仓库的ca证书放到文件夹中。

例如我的:

/e/d/certs.d# tree
.
└── hub.ict.ac.cn
    └── ca.crt

拉取公开镜像

自签名证书需要先配置docker信任证书。

证书配置完成后可直接拉取,使用镜像。

拉取私有镜像

核心思路:拉取私有仓库镜像需要配置私有仓库的登陆信息,用Secret存储,并且定义Deployment或者Pod时,指定imagePullSecret为保存了私有仓库登陆信息的Secret名。

docker credential创建Secret

如果使用docker login登陆过私有仓库,那么可以直接使用.docker/config.json文件生成Secret。

kubectl create secret generic <secret-name>  \
    --from-file=.dockerconfigjson=<path/to/.docker/config.json> \
    --type=kubernetes.io/dockerconfigjson

如果需要改变namespace 可以添加-n <your-namespace>。也可以自定义Secret,但必须保证:

  1. Secret的data项目key是.dockerconfigjson;
  2. .docker/config.json文件BASE64编码,然后粘贴到data[".dockerconfigjson"]不要有换行
  3. Secret type必须是kubernetes.io/dockerconfigjson;

例如:

apiVersion: v1
kind: Secret
metadata:
  name: myregistrykey
  namespace: awesomeapps
data:
  .dockerconfigjson: UmVhbGx5IHJlYWxseSByZWVlZWVlZWVlZWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGx5eXl5eXl5eXl5eXl5eXl5eXl5eSBsbGxsbGxsbGxsbGxsbG9vb29vb29vb29vb29vb29vb29vb29vb29vb25ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubmdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2cgYXV0aCBrZXlzCg==
type: kubernetes.io/dockerconfigjson

用户名密码创建Secret

也可以使用私有仓库的用户名密码,直接创建Secret:

kubectl create secret docker-registry <secret-name> --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>

使用私有仓库的私有镜像

私有镜像使用的例子:

apiVersion: v1
kind: Pod
metadata:
  name: private-reg
spec:
  containers:
  - name: private-reg-container
    image: <your-private-image>
  imagePullSecrets:
  - name: regcred

注意:imagePullSecrets

常见错误

error: no objects passed to create:Base64字符串错误。
Secret "myregistrykey" is invalid: data[.dockerconfigjson]: invalid value ..:BASE64字符串正确但是不能解析为.docker/config.json文件。

参考

  1. kubernetes官方文档pull-image-private-registry
  2. harbor说明文档 私有镜像的使用

--Edited from Rpc

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部