我们的客户使用内部网络。我们有k8s应用程序,一些Yaml文件需要从互联网下载图像。我有一台win10电脑,可以SSH内部服务器并访问Internet。如何下载图像然后上传到内部服务器?
某些图片下载站点为:
chenliujin/defaultbackend (nginx-default-backend.yaml)
quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.15.0
答案 0 :(得分:3)
如何下载图像然后上传到内部服务器?
最短的成功之路是
ssh the-machine-with-internet -- 'bash -ec \
"docker pull quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.15.0 ; \
docker save quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.15.0"' \
| ssh the-machine-without-internet -- 'docker load'
实际上,您需要为集群中的每个节点重复该ssh machine-without-internet -- docker load
位,否则,当他们在docker images
中找不到图像时,他们将尝试拉图像。我们来...
如果愿意,您还可以自由地缓存中间文件,如:
ssh machine-with-internet -- 'bash -ec \
"docker pull quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.15.0 ; \
docker save -o /some/directory/nginx-ingress-0.15.0.tar quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.15.0"'
scp machine-with-internet /some/directory/nginx-ingress-0.15.0.tar /some/other/place
# and so forth, including only optionally running the first pull-and-save step
在PodSpec的主要容器尝试启动之前,完全有可能在PodSpec中使用initContainer:
来实现任何类型的docker映像的预加载,但这很可能会使您的PodSpec杂乱无章和直接。
说了这么多,就像@KonstantinVustin已经正确说过的那样:拥有一个本地docker仓库来镜像内容将为您节省很多心痛
答案 1 :(得分:3)
最好的方法-为Docker
存储库部署本地镜像。例如,它可能是JFrog的Artifactory