K8S--解决访问Harbor私有仓库无权限的问题(401 Unauthorized)

原文网址:K8S--解决访问Harbor私有仓库无权限的问题(401 Unauthorized)-CSDN博客

简介

本文解决K8S访问Harbor私有仓库无权限的问题:401 Unauthorized。

问题复现

用Harbor部署了私有仓库,将镜像推送上去。指定私有仓库的镜像创建Pods时报错了,关键日志是:401 Unauthorized

这个日志是Pods的日志,可以在dashboard上或者通过kubectl describe pod 查看。

原因分析

需要访问权限。

问题解决

需要在 Kubenetes 配置 Secret 访问 Harbor私有仓库。

1.登录并获取密钥

1.登录

docker login 192.168.5.193:15001

结果 

2. 查看密钥

cat ~/.docker/config.json

结果

2.创建Harbor机器人账号

上边是文章的部分内容,为便于维护,全文已转移到此网址:K8S-解决访问Harbor私有仓库无权限的问题(401 Unauthorized) - 自学精灵

### 集成Harbor私有仓库Kubernetes及Containerd #### 准备工作 为了使Kubernetes集群能够拉取来自Harbor私有镜像仓库的镜像,需先创建一个Docker Registry Secret对象。此Secret用于存储访问Harbor所需的认证信息[^1]。 ```bash kubectl create secret docker-registry regcred \ --docker-server=<harbor-url> \ --docker-username=<your-name> \ --docker-password=<your-pword> ``` 上述命令中`<harbor-url>`应替换为实际部署Harbor服务的URL地址;而`<your-name>`和`<your-pword>`则分别为登录Harbor所使用的用户名及其对应的密码。 #### 修改Pod配置文件 当定义Pod资源清单时,在`.spec.imagePullSecrets[]`字段下指定之前创建好的secret名称,以便于kubelet可以利用该凭证去连接至Harbor并下载所需镜像: ```yaml apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: nginx image: harbor.example.com/library/nginx:latest imagePullSecrets: - name: regcred ``` 此处需要注意的是image路径前缀部分应当指向已设置完毕的Harbor实例位置。 #### Containerd配置调整 对于采用containerd作为CRI(Container Runtime Interface)插件运行环境下的节点而言,则还需要进一步编辑其全局配置文件(`/etc/containerd/config.toml`)来添加必要的镜像端点映射规则: ```toml [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors.<harbor-url>] endpoint = ["https://<harbor-url>"] ``` 完成以上更改之后记得重启containerd守护进程以确保新的设定生效。 #### 测试验证 最后可以通过部署测试性的Deployment或Job任务来进行最终的功能检验,确认整个流程无误后即表示成功实现了两者的对接操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

IT利刃出鞘

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

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

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

打赏作者

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

抵扣说明:

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

余额充值