如何在Google容器引擎上运行私有的Docker镜像

38
4个回答

48

您可以将自己的镜像推送到Google容器注册表,并从您的Pod清单中引用它们。

详细说明

假设您已经正确设置了DOCKER_HOST,在运行最新版本Kubernetes的GKE集群以及安装了Google Cloud SDK

  1. 设置一些环境变量

gcloud components update kubectl
gcloud config set project <your-project>
gcloud config set compute/zone <your-cluster-zone>
gcloud config set container/cluster <your-cluster-name>
gcloud container clusters get-credentials <your-cluster-name>
  • 给你的图片打标签

  • docker tag <your-image> gcr.io/<your-project>/<your-image>
    
  • 推送您的镜像

  • gcloud docker push gcr.io/<your-project>/<your-image>
    
  • 为您的容器创建一个 Pod 配置文件:my-pod.yaml

  • id: my-pod
    kind: Pod
    apiVersion: v1
    desiredState:
      manifest:
        containers:
        - name: <container-name>
          image: gcr.io/<your-project>/<your-image>
        ...
    
  • 安排这个Pod的时间

  • kubectl create -f my-pod.yaml
    
  • 对于想要运行的每个Pod,重复执行步骤(4)。您可以使用含有---分隔符的行在单个文件中拥有多个定义。


  • gcloud preview container pods --cluster-name cluster-1 create --zone europe-west1-c --config-file registry-pod.yaml命令中,出现了resource.go:132] The resource in the provided file has no apiVersion defined的错误提示。 - Vad1mo
    请查看以下网址以获取更新的Pod示例:https://github.com/GoogleCloudPlatform/kubernetes/blob/master/examples/gce-pd/testpd.yaml - Vad1mo
    Google Container Engine (GKE) 已经升级到 Kubernetes 0.6.1,因此引用 localhost 不再起作用。当前的解决方法是通过 IP 引用您的私有仓库。另请参阅:https://github.com/GoogleCloudPlatform/kubernetes/wiki/User-FAQ - Shannon
    1
    更新了答案,使用Google容器注册表 - proppy
    2
    可以使用来自Docker Hub的镜像,还是必须将其上传到标记为“gcr.io/<image>”的Gcloud注册表中?我可能漏掉了什么。 - Kerem
    显示剩余4条评论

    1
    我使用的设置是将我的自己的Docker注册表部署与SSH端口转发相结合。为此,我在集群中设置了一个SSH服务器,并使用~/.ssh/config配置了端口转发到注册表。
    另外,我使用Jenkins在云中构建镜像。

    1
    步骤1:指定您需要操作的容器。
    gcloud container clusters get-credentials [$cluster_name]
    

    步骤2:标记您想要运行的Docker镜像。
    docker tag nginx gcr.io/first-project/nginx
    

    步骤三:推送图像。
    gcloud docker push gcr.io/first-project/nginx
    

    第四步:创建yaml文件(test.yaml)
    apiVersion: v1
    kind: Pod
    containers:
    - name : nginx1
      image: gcr.io/first-project/nginx
    

    第五步:创建Pod。
    kubectl create –f test.yaml
    

    0

    在启动Pod之前,您可以将私有Docker注册表的注册身份验证密钥复制到minions根目录中的.dockercfg文件中。 或在启动之前在minions上运行docker login。

        docker login --username=<> --password=<> --email=<> <DockerServer>
    

    在 Pod 配置中引用私有 Docker 镜像,应该可以按预期工作。


    我在哪里可以找到Google容器注册表的用户名和密码? - jiwhiz
    有没有办法在GKE中自动化这个过程?我尝试在节点上运行docker login,但在启动工作负载时仍然会出现imagepulloff错误。我正在使用GitLab容器注册表,它允许您使用密码和/或令牌登录。 - Ray Foss

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接