我正在尝试使用Kubernetes从不安全的存储库中部署docker映像。 我已经进行了几个配置设置,以便将存储库声明为不安全的,并且还可以验证存储库是否为不安全的。
尝试通过
从Kubernetes部署此示例应用程序时仍然如此尝试从不安全的私有注册表中部署docker映像时,通过所有三种方式创建Dashboard / deployment.yaml /秘密pod,我看到以下错误。请求提供一些帮助来解决这些问题。
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 41m default-scheduler Successfully assigned registry/private-insecure-reg to kube-node-2
Warning Failed 40m (x2 over 40m) kubelet, kube-node-2 Failed to pull image "x.x.x.x:5000/x-xxx": rpc error: code = Unknown desc = Error response from daemon: manifest for x.x.x.x:5000/x-xxx:latest not found
Normal BackOff 39m (x6 over 41m) kubelet, kube-node-2 Back-off pulling image "127.0.0.1:5000/my-ubuntu"
Normal Pulling 39m (x4 over 41m) kubelet, kube-node-2 pulling image "127.0.0.1:5000/my-ubuntu"
Warning Failed 39m (x2 over 41m) kubelet, kube-node-2 Failed to pull image "x.x.x.x:5000/x-xxx": rpc error: code = Unknown desc = Error response from daemon: received unexpected HTTP status: 502 Bad Gateway
Warning Failed 39m (x4 over 41m) kubelet, kube-node-2 Error: ErrImagePull
Warning Failed 52s (x174 over 41m) kubelet, kube-node-2 Error: ImagePullBackOff
答案 0 :(得分:2)
您使用普通docker在kubernetes主节点上设置了注册表。因此,它只能由localhost或127.0.0.1在主节点本身上访问。
根据日志文件kube-node-2
,您正在尝试从其他节点提取图像。在该节点上,本地主机上没有注册表。但是,由于收到严重的网关错误,因此似乎在端口5000上监听了某些内容,而不是注册表。
这是解决此问题的方法:为主节点的IP添加一个DNS名称,以便每个节点都可以使用普通名称访问它。如果您不想配置TLS证书,则必须配置每个容器守护程序以将您的注册表视为不安全的(无HTTPS)。有关docker守护程序的配置,请参见答案表A_Suh。
答案 1 :(得分:1)
1)您需要通过编辑文件/etc/default/docker
并更新DOCKER_OPTS来配置docker服务以使用不安全的注册表
例如
DOCKER_OPTS='--insecure-registry 127.0.0.1:5000'
2)重新启动docker
sudo systemctl restart docker