rancher2.x连接私有仓库harbor

我搭建了一个Rancher2.4.4版本环境,因为之前已经有一个独立搭建的Harbor,现在需要在Rancher中部署Harbor中的镜像,问题是当我按如下图部署服务后,rancher不能正常拉取我原有的harbor中的镜像(我最开始创建集群的时候没有配置私有仓库,所以才有了本文的内容)

问题如图所示:
rancher2.x连接私有仓库harbor_第1张图片
按如图配置拉取我harbor中的镜像出现了错误
rancher2.x连接私有仓库harbor_第2张图片
错误提示如下:

ErrImagePull: rpc error: code = Unknown desc = Error response from daemon: unauthorized: unauthorized to access repository: shanhy/docs, action: pull: unauthorized to access repository: shanhy/docs, action: pull
ImagePullBackOff: Back-off pulling image "harbor.shanhy.com:81/shanhy/docs:develop.latest"

从错误信息中,可以判断出来是因为权限问题导致,后来经过分析,确定是没有访问harbor的权限。

按如下方法操作后解决问题

一、创建用于连接 harbor 的 secret
rancher2.x连接私有仓库harbor_第3张图片
rancher2.x连接私有仓库harbor_第4张图片

kubectl create secret docker-registry secret-harbor --namespace=my-docs \
--docker-server=http://harbor.shanhy.com:81 --docker-username=admin \
--docker-password=harbor123456789 --docker-email=[email protected]

secret-harbor 起一个 secret 名字
my-docs 为 secret 所属的 namespace
docker-server 为 harbor 私服地址
docker-username 为 harbor 私服登录账号
docker-password 为 harbor 私服登录密码

二、配置服务的YAML 添加 secret

打开工作负载,修改YAML文件内容,操作截图如下:
rancher2.x连接私有仓库harbor_第5张图片
rancher2.x连接私有仓库harbor_第6张图片
如图添加 imagePullSecrets 为刚刚创建的 secret 即 secret-harbor

注:其中 imagePullSecrets 是声明拉取镜像时需要指定密钥,name 的值必须和上面生成密钥的键名一致, 另外检查一下 pod 和密钥是否在同一个 namespace(必须相同),之后k8s便可以拉取镜像。

然后保存,观察 Pods 状态就变成了绿色,拉取和创建容器成功。


(END)

你可能感兴趣的:(Kubernetes)