代码之家  ›  专栏  ›  技术社区  ›  user84592

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

  •  0
  • user84592  · 技术社区  · 8 年前

    我们的客户使用内部网络。我们有k8s应用程序,一些yaml文件需要从互联网上下载图片。我有一台win10计算机,我可以ssh内部服务器和访问internet。如何下载图片然后上传到内部服务器?

    一些图片下载站点是:

    chenliujin/defaultbackend  (nginx-default-backend.yaml)
    quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.15.0
    
    2 回复  |  直到 8 年前
        1
  •  3
  •   mdaniel    8 年前

    如何下载图片然后上传到内部服务器?

    成功的捷径是

    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
    

    完全可以使用 initContainer: 在PODSPEC中,在主容器的容器试图启动之前,实现任何类型的Dokes图像预加载,但这可能会使PODSPEC混乱,除非它非常小和简单。

    说到这里,正如@konstantinvustin已经正确地说的那样:拥有一个本地docker存储库来镜像内容将为您节省大量的心痛。

        2
  •  3
  •   Konstantin Vustin    8 年前

    最佳方法-部署本地镜像 Docker 储存库。例如,它可能是 Artifactory 用J青蛙

    推荐文章