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,部署过程中私有仓库的镜像拉取就正常了。

相关推荐
qq_284274054 小时前
电气控制笔记:常用低压电器符号原理与异步电动机点动、自锁、多地控制电路(含考点)
笔记·学习·自动化·制造
code_slave(码畜)4 小时前
微服务架构落地:读写分离架构 —— 主从延迟引发的“刚开单查不到”灾难与破局
spring boot·分布式·spring cloud·微服务·云原生·架构·读写分离
坤坤子吖4 小时前
Linux 线程同步与互斥——条件变量与线程同步
linux·开发语言·c++·笔记·学习
凯凯姜4 小时前
Vue 3 深入学习笔记 16:API 请求封装与统一错误处理
vue.js·笔记·学习
小弥儿4 小时前
GitHub今日热榜 | 2026-10-20:智能体基建七席连庄,生成类项目回流
学习·开源·github
问天_观心5 小时前
模型微调学习(二)
开发语言·人工智能·学习·语言模型·github
dadaobusi5 小时前
学习:PCIe6.0 RS FEC
学习
_橙时_5 小时前
【MOEA/D的学习小笔记】
笔记·学习·多目标优化·moea/d
kaixin_learn_qt_ing5 小时前
QCommandLineParser 学习
学习
你看我名字5 小时前
LAMP 架构演练:从云主机准备到 Apache、PHP、MySQL 上线验证
运维·ci/cd·架构·kubernetes·jenkins