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

相关推荐
好奇龙猫12 小时前
【人工智能学习-AI-MIT公开课12. 学习:神经网络、反向传播】
人工智能·神经网络·学习
赵长辉13 小时前
AGI学习:langchain第一课,提示词模版、大模型、输出解析器,链,部署【2025.10.20的课程复习笔记】
学习·langchain·agi
im_AMBER13 小时前
Leetcode 94 合并零之间的节点
数据结构·c++·笔记·学习·算法·leetcode
没有bug.的程序员13 小时前
技术中台的职责边界:基础能力抽象、统一组件平台与过度封装风险深度解析
微服务·云原生·研发效能·架构设计·中台架构·技术中台·sdk设计
RaLi和夕14 小时前
硬件电路设计学习笔记2.三极管基极为什么要加上下拉电阻?以及三级管的最大耐压
笔记·嵌入式硬件·学习
0和1的舞者14 小时前
字典与文件操作全解析
python·学习
im_AMBER14 小时前
数据结构 16 【复习】静态查找表 | 二叉排序树的查找 | AVL树的旋转
数据结构·笔记·学习·算法
im_AMBER14 小时前
数据结构 17 【复习】习题
数据结构·笔记·学习·算法
非凡ghost14 小时前
NSMusicS(开源音乐播放器)
windows·学习·firefox·软件需求
starsky_walker14 小时前
【论文阅读】--从OSDI里学习论文的引言
论文阅读·学习