我有一个私有注册表,它是通过https协议访问的。但是Kubernetes + Docker总是尝试使用http协议http://myserver.com:8080而不是https://myserver.com:8080。
如何强制使用https协议?
声明Pod的yaml文件片段:
containers:
- name: apl
image: myserver.com:8080/myimage我的环境细节:
Kubernetes日志中的错误消息:
Normal Pulling 30s (x4 over 2m2s) kubelet, minikube pulling image "docker.mydomain.com:30500/vision-ssh"
Warning Failed 30s (x4 over 2m2s) kubelet, minikube Failed to pull image "docker.mydomain.com:30500/vision-ssh": rpc error: code = Unknown desc = Error response from daemon: Get http://docker.mydomain.com:30500/v2/: net/http: HTTP/1.x transport connection broken: malformed HTTP response "\x15\x03\x01\x00\x02\x02"
Warning Failed 30s (x4 over 2m2s) kubelet, minikube Error: ErrImagePull
Warning Failed 19s (x6 over 2m2s) kubelet, minikube Error: ImagePullBackOff
Normal BackOff 4s (x7 over 2m2s) kubelet, minikube Back-off pulling image "docker.fccma.com:30500/vision-ssh"如果我试图以图像的名称指定协议,它会抱怨:
couldn't parse image reference "https://docker.mydomain.com:30500/vision-ssh": invalid reference format遵循此指南以创建图像注册表。它已经被保护(HTTPS协议,并受用户/密码的保护)。
发布于 2019-01-29 14:42:22
在/etc/hosts文件中,服务器docker.mydomain.com映射到127.0.0.1。我在码头医生中看到,本地注册中心总是被认为是不安全的。如果我使用映射到外部IP的名称,那么Docker将尝试https。
发布于 2019-01-29 13:19:10
您的私人码头注册表可能不安全。如果它是安全的私有注册中心,它总是使用https,否则它会引用http。
有关更多细节,请参阅doc:
Docker uses the https:// protocol to communicate with a registry, unless the registry is allowed to be accessed over an insecure connection. Refer to the insecure registries section for more information.https://docs.docker.com/engine/reference/commandline/dockerd/#insecure-registries
因此,要强制https,保护您的注册表。网上有许多文章可用于保护您的注册中心。
发布于 2019-01-29 18:16:34
在容器注册服务前面运行https代理服务。将nginx视为https代理
https://stackoverflow.com/questions/54420158
复制相似问题