![](/img/trans.png)
[英]"no basic auth credentials" while pulling image or doing docker-compose for images from a private Nexus repository
[英]How to skip TLS cert check for crictl (containerd CR) while pulling the images from private repository
我已經安裝了 k8s 1.24 版本,並且 containerd (containerd://1.5.9) 是我的設置 (ubuntu 20.04) 的 CR。
我還在我的 VM 上安裝了 docker 並在 /etc/docker/daemon.json 下添加了我的私有存儲庫,並進行了以下更改:
{ "insecure-registries" : ["myPvtRepo.com:5028"] }
當我在使用 docker pull myPvtRepo:123/image 使用docker login myPvtRepo:123
命令登錄到我的 pvt repo 后運行docker pull myPvtRepo:123/image
時,我能夠在使用crictl pull myPvtRepo:123/image
運行相同命令的同時拉取圖像,我正面臨:
E0819 06:49:01.200489 162610 remote_image.go:218] “從圖像服務中提取圖像失敗” err="rpc 錯誤:代碼 = 未知描述 = 無法提取和解壓縮圖像 "myPvtRepo.com:5028/centos:latest": 失敗解析引用“myPvtRepo.com:5028/centos:latest”:請求失敗:Head https://myPvtRepo.com::5028/v2/centos/manifests/latest :x509:由未知權威機構簽署的證書“image= “myPvtRepo.com::5028/centos:latest” FATA[0000] 拉取圖像:rpc 錯誤:代碼 = Unknown desc = 拉取和解壓圖像失敗 “myPvtRepo.com::5028/centos:latest”:無法解析參考“myPvtRepo.com:5028/centos:latest”:請求失敗:Head https://myPvtRepo.com::5028/v2/centos/manifests/latest :x509:由未知權威機構簽署的證書
僅供參考,我已經用以下內容修改了 /etc/containerd/config.toml。
version = 2
[plugin."io.containerd.grpc.v1.cri".registry.configs."myPvtRepo.com:5028".tls]
insecure_skip_verify = true
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["https://myPvtRepo.com:5028", "https://myPvtRepo.com:5038", "https://myPvtRepo.com:5037",
"https://myPvtRepo.com:5039"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."IP:5000"]
endpoint = ["http://IP:5000"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."IP:5000"]
endpoint = ["http://IP:5000"]
我還修改了 containerd 的端點以指向 containerd 的襪子。
即使在為我的 pvt 存儲庫設置了insecure_skip_verify = true
並重新啟動 containerd 服務之后,你能幫我理解並解決這個問題嗎?
我有一個解決方案:
cd /usr/local/share/ca-certificates/
curl -L --remote-name http://your-artifacts.com/xyz-bundle.crt
/usr/sbin/update-ca-certificates
這對我有用。
還要確保在 /etc/crictl.yaml 下更新您的端點
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: ""
timeout: 0
debug: false
pull-image-on-create: false
disable-pull-on-run: false
您需要為私有注冊表指定hosts.toml
文件並添加skip-verify = true
。
參考: https://github.com/containerd/containerd/blob/main/docs/hosts.md
腳步:
mkdir -p /etc/containerd/certs.d/<your registry>
/etc/containerd/config.toml
中添加這些配置: [plugins."io.containerd.grpc.v1.cri".registry] config_path = "/etc/containerd/certs.d"
hosts.toml
server = "https://<your registry>" [host."https://<your registry>"] capabilities = ["pull", "resolve"] skip_verify = true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.