kubernetes:如何将图像下载和上传到内部网络

时间:2018-06-20 03:20:58

标签: kubernetes

我们的客户使用内部网络。我们有k8s应用程序,一些Yaml文件需要从互联网下载图像。我有一台win10电脑,可以SSH内部服务器并访问Internet。如何下载图像然后上传到内部服务器?

某些图片下载站点为:

chenliujin/defaultbackend  (nginx-default-backend.yaml)
quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.15.0

2 个答案:

答案 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