Kubernetes 集群接入 Harbor 私有倉庫的兩種方法
一、前提
- 部署完成的harbor倉庫:《快速搭建一套企業級Harbor鏡像倉庫》
- 正常運行的Kubernetes集群:《領導讓我部署一套Kubernetes集群,我咔咔咔給他搞定(1.32無坑版)》
如果還沒有,可以參考我前面的文章來部署,然后再進行下面的操作。

二、Harbor準備工作
1. 創建 Harbor 項目
在harbor上創建私有倉庫prod

2. 推送鏡像到Harbor倉庫
# 從公網下載鏡像
docker pull docker.m.daocloud.io/nginx:1.27
# 重新打標簽,指向 Harbor 倉庫
docker tag docker.m.daocloud.io/nginx:1.27 harbor.liyb.com/prod/nginx:1.27
# 登錄 Harbor
docker login harbor.liyb.com -u admin -p
輸入密碼
#推送鏡像
docker push harbor.liyb.com/prod/nginx:1.27Kubernetes接入harbor倉庫有兩種方法,一種是創建Secret,使用 imagePullSecrets注入到需要運行的pod中,該方式只對單個pod生效。另一個種是將harbor配置寫入容器運行時,整個集群生效。
由于第一種方法比較簡單,我下面就演示如何修改containerd,讓整個Kubernetes都可以下載harbor鏡像。
三、修改containerd配置文件
在每個節點配置 containerd 拉取鏡像的認證信息。
1. 修改配置文件
修改 containerd 的配置文件,通常路徑為 /etc/containerd/config.toml
# 修改前最好備份一下
cp /etc/containerd/config.toml /etc/containerd/config.toml.bak
# 編輯文件,添加配置
vi /etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".registry.configs]
[plugins."io.containerd.grpc.v1.cri".registry.configs."harbor.liyb.com".tls]
insecure_skip_verify = true [plugins."io.containerd.grpc.v1.cri".registry.configs."harbor.liyb.com".auth]
username = "admin"
password = "Harbor12345"或者使用 TLS 證書: 如果 Harbor 配置了自簽名證書,添加信任的根證書:
[plugins."io.containerd.grpc.v1.cri".registry.configs."harbor.liyb.com".tls]
ca_file = "/etc/containerd/certs/harbor-ca.crt"如果證書未設置,可能需要將 insecure_skip_verify = true 臨時關閉驗證。
保存文件后,重啟 containerd 服務:
sudo systemctl restart containerd2. 其他節點做相同操作
# 將配置文件傳輸到其他節點
scp /etc/containerd/config.toml root@10.0.0.211:/etc/containerd
scp /etc/containerd/config.toml root@10.0.0.212:/etc/containerd
# 通過master節點來重啟其他節點的containerd
ssh root@10.0.0.211 systemctl restart containerd
ssh root@10.0.0.212 systemctl restart containerd3. 每個節點添加hosts配置
cat >> /etc/hosts <<EOF
10.0.0.207 harbor.liyb.com
EOF四、拉取鏡像到K8S集群
拉取鏡像:
# 拉取鏡像
crictl pull harbor.liyb.com/prod/nginx:1.27
# 查看
crictl images |grep nginx可以看到順利將鏡像拉下來了。





















