kubernetes 拉取harbor私有仓库镜像

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

愈来越多的企业和团体都有自己的私有仓库,但是在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   \
    --from-file=.dockerconfigjson= \
    --type=kubernetes.io/dockerconfigjson

如果需要改变namespace 可以添加-n 。也可以自定义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  --docker-server= --docker-username= --docker-password= --docker-email=

使用私有仓库的私有镜像

私有镜像使用的例子:

apiVersion: v1
kind: Pod
metadata:
  name: private-reg
spec:
  containers:
  - name: private-reg-container
    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

转载于:https://my.oschina.net/hgfdoing/blog/3047578

你可能感兴趣的:(kubernetes 拉取harbor私有仓库镜像)