簡體   English   中英

kubernetes 無法拉取鏡像 docker 私有注冊表

[英]kubernetes unable to pull image docker private registry

我嘗試在 kubernetes 中部署“部署”,這是從私有注冊表中提取 docker 映像(我不知道是誰進行了此設置),但是在“docker pull images”期間通過 ZB76E98AF9AAA680979BF5A65B2D5A1 得到以下錯誤

node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason     Age                From               Message
  ----     ------     ----               ----               -------
  Normal   Scheduled  85s                default-scheduler  Successfully assigned default/trusted-enc-assettag1-deployment-8467b74958-6fbp7 to k8s-node
  Normal   BackOff    24s (x2 over 61s)  kubelet, k8s-node  Back-off pulling image "10.105.168.81:5000/simplehttpserverenc:enc_v1"
  Warning  Failed     24s (x2 over 61s)  kubelet, k8s-node  Error: ImagePullBackOff
  Normal   Pulling    12s (x3 over 82s)  kubelet, k8s-node  Pulling image "10.105.168.81:5000/simplehttpserverenc:enc_v1"
  Warning  Failed     0s (x3 over 62s)   kubelet, k8s-node  Failed to pull image "10.105.168.81:5000/simplehttpserverenc:enc_v1": rpc error: code = Unknown desc = Error response from daemon: Get https://10.105.168.81:5000/v2/: net/http: TLS handshake timeout
  Warning  Failed     0s (x3 over 62s)   kubelet, k8s-node  Error: ErrImagePull
[root@k8s-master ~]# docker pull 10.105.168.81:5000/simplehttpserverenc:enc_v1

ImagePullBackOff 和 net/http:TLS 握手超時錯誤。

最初,在 docker 拉取中也觀察到此“net/http:TLS 握手超時”錯誤。 我參考了一些答案和

配置的證書(/etc/docker/certs.d//ca.crt)和代理(/etc/systemd/system/docker.service.d/proxy.conf)

之后能夠執行 docker 從私有圖像中提取。

[root@k8s-master ~]# docker pull 10.105.168.81:5000/simplehttpserverenc:enc_v1
enc_v1: Pulling from simplehttpserverenc
54fec2fa59d0: Pull complete
cd3f35d84cab: Pull complete
a0afc8e92ef0: Pull complete
9691f23efdb7: Pull complete
6512e60b314b: Pull complete
a8ac6632d329: Pull complete
68f4c4e0aa8c: Pull complete
Digest: sha256:0358708cd11e96f6cf6f22b29d46a8eec50d7107597b866e1616a73a198fe797
Status: Downloaded newer image for 10.105.168.81:5000/simplehttpserverenc:enc_v1
10.105.168.81:5000/simplehttpserverenc:enc_v1
[root@k8s-master ~]#

但仍然無法通過 kubernetes 執行此 docker 拉動。 如何解決這個問題?

如果您在 k8s 中使用 docker 作為容器引擎,AFAIK 與了解配置相同。 因為鏡像拉取是由容器引擎進行的,它依賴於證書的每個私有配置。 在你的 k8s 的工作節點上拉取相同的圖像怎么樣? 是否可以毫無錯誤地拉出一個?

由於您的dockerconfigjson無法正常工作。 試試這個方法:

kubectl create secret docker-registry regcred --docker-server=10.105.168.81:5000 --docker-username=<your-name> --docker-password=<your-pword>

在 Kubernetes 清單中:

apiVersion: v1
kind: Pod
metadata:
  name: private-reg
spec:
  containers:
  - name: private-reg-container
    image: 10.105.168.81:5000/simplehttpserverenc:enc_v1
  imagePullSecrets:
  - name: regcred

當我忘記配置這些秘密時,我已經多次遇到這種情況。 此外,如果您有任何其他命名空間,則必須分別為每個命名空間生成秘密,將-n <your-ns>傳遞給上面的kubectl create secret

編輯:因為您無法從工作節點中提取圖像。

  1. 確保將 docker-registry ca.crt復制到/etc/docker/certs.d/ca.crt

然后嘗試docker pull

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM