【Kubernetes系列】Kubenetes如何访问Harbor私有仓库(401 Unauthorized问题解决)


一、问题描述

Kubenetes 拉取 Harbor 私有仓库镜像报 401 Unauthorized 错误:

Failed to pull image "192.168.1.48/shop/common-api:4.2.3.1": rpc error: code = Unknown desc = failed to pull and unpack image "192.168.1.48/shop/common-api:4.2.3.1": failed to resolve reference "192.168.1.48/shop/common-api:4.2.3.1": pulling from host 192.168.1.48 failed with status code [manifests 4.2.3.1]: 401 Unauthorized

二、解决方法

需要在 Kubenetes 配置 Secret 访问 Harbor。

1.登录

docker login 192.168.1.48

2.查看登录的密钥数据

cat ~/.docker/config.json

3.加密密钥

cat ~/.docker/config.json | base64 -w 0

4.Harbor 上创建机器人账号

Harbor 上创建机器人账号,账号名称与将要创建的 Secret 名称一致:
在这里插入图片描述

5.创建 Secret

(1)方式一:命令行创建

kubectl create secret docker-registry harbor-secret --docker-server="192.168.1.48"  \
--docker-email=test@test.com  \
--docker-username='admin'  \
--docker-password='Harbor12345' \
-n shop-service

(2)方式二:yaml 文件创建

创建 harbor-secret.yaml 文件,其中 .dockerconfigjson 的值为第 3 步获得的加密串:

vi harbor-secret.yaml 
apiVersion: v1
kind: Secret
metadata:
  name: harbor-secret
  namespace: shop-service
data:
  .dockerconfigjson: ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjEuNDgiOiB7CgkJCSJhdXRoIjogIllXUnRhVzQ2U0dGeVltOXlNVEl6TkRVPSIKCQl9LAoJCSIxOTIuMTY4LjEuNDg6NDQzIjogewoJCQkiYXV0aCI6ICJZV1J0YVc0NlNHRnlZbTl5TVRJek5EVT0iCgkJfQoJfQp9
type: kubernetes.io/dockerconfigjson

执行:

kubectl apply -f harbor-secret.yaml

6.Pod 上应用 Secret

Pod 上指定 imagePullSecrets:

spec:
   imagePullSecrets:
   - name: harbor-secret
   containers:
   - name: my-nginx
     image: 192.168.10.48/shop/nginx:1.21.1
     ports:
     - containerPort: 80

7.设置自动关联 Secret

从第 6 步我们看到,每次在创建 Pod 时都需要通过 imagePullSecrets 字段引用相应 namespace 下的 secret,很不方便,可以通过 kubectl patch 命令来将 namespace 和对应的 secret 自动关联,执行如下语句,关联后就不需要在 Pod 上指定 imagePullSecrets:

kubectl patch serviceaccount default -n shop-service -p '{"imagePullSecrets":[{"name":"harbor-secret"}]}'
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑吧邓邓子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值