k8s学习——升级后的k8s使用私有harbor仓库

升级后的k8s使用了第三方的容器管理器,安装了nerdctl工具来替代docker进行镜像管理。但是使用docker build打包并上传至harbor仓库的镜像,在部署过程中始终拉不下来,报错证书错误。通过journalctl -xe |grep kubelet 或 journalctl -xe |grep containerd 查看可以看到报错结果。

复制代码
containerd[3109309]: time="2024-07-18T18:41:26.197261520+08:00" level=error msg="PullImage \"core.harbor.shell.com:443/library/nettools:v1\" failed" error="failed to pull and unpack image \"core.harbor.shell.com:443/library/nettools:v1\": failed to resolve reference \"core.harbor.shell.com:443/library/nettools:v1\": failed to do request: Head \"https://core.harbor.shell.com:443/v2/library/nettools/manifests/v1\": tls: failed to verify certificate: x509: certificate signed by unknown authority"

在/etc/containerd/certs.d 目录下效仿docker设置将证书放在core.harbor.shell.com:443目录下。重新加载配置,重启kubelet、containerd甚至docker后,依旧是报错。很奇怪的是使用sudo nerdctl login core.harbor.shell.com:443 登录还能登录成功。后来看了一篇文章才知道,nerdctl工具没有安装完全,除了nerdctl工具外还要安装buildctl工具,否则nerdctl build 不能使用,同时,还需要启动一个buildkitd服务。其工具的下载地址:

复制代码
wget https://github.com/moby/buildkit/releases/download/v0.15.0/buildkit-v0.15.0.linux-amd64.tar.gz

可参考Containerd 高级命令行工具 nerdctl安装文档_nerdctl 安装-CSDN博客

如果不安装buildctl工具,通过命令 nerdctl version 也会警告没有安装buildctl工具。

等把所有节点全部安装了buildctl 并启动了buildkit服务后,再重启kubelet、containterd,部署过程中私有仓库的镜像拉取就正常了。

相关推荐
行思理4 小时前
go语言学习难度及适合学习的人群
开发语言·学习·golang
知已难寻6 小时前
第 2 篇 · 云的地基:服务器、存储、网络三大基础设施
运维·服务器·网络·云原生·云计算·负载均衡·1024程序员节
楚山之石8 小时前
【Medical Image Analysis】深度学习医学图像合成综述:伪CT、合成MRI与合成PET的架构、性能与临床边界
图像处理·人工智能·学习·mr·mri
Li_RuiQi9 小时前
DAgger方法演进_独立学习笔记
笔记·学习·计算机视觉
阿里云云原生10 小时前
车企数据隐私保护必修课:如何用 SLS mask 守住日志中的敏感信息
云原生
阿里云云原生10 小时前
切换模型会损失缓存,智能路由还省钱吗?
云原生
闲云野鹤在人间10 小时前
Kubernetes Service 与 kube-proxy 详解
云原生·容器·kubernetes
我不会起名字32211 小时前
节点 NotReady:kubelet 与容器运行时的 4 步排查
云原生·kubernetes·kubelet·排查
SteveSenna12 小时前
aubo学习:realsense手眼标定
学习·机器人·视觉检测
闲云自留地12 小时前
K8s Service 全解:服务发现、四种类型、会话保持、金丝雀发布一篇通
容器·kubernetes·服务发现