[英]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
编辑:因为您无法从工作节点中提取图像。
ca.crt
复制到/etc/docker/certs.d/ca.crt
然后尝试docker pull
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.