如何访问内部部署kubernetes集群上的gcloud私有存储库?

时间:2018-05-03 12:25:39

标签: kubernetes google-container-registry kubelet

我们正在运行内部运行的kubernetes集群。我们有GCR私人存储库。那么我们如何访问我的内部部署kubernetes集群的私有存储库,我知道我们可以使用gcloud-sdk,但是不可能在kubernetes集群的每个节点上安装gcloud-sdk。

2 个答案:

答案 0 :(得分:1)

在GKE或GCE上运行的Kubernetes群集有native support for accessing the container registry,无需进一步配置。

正如您提到的那样,您正在运行内部部署群集,而您没有运行任何这些内容,只能使用GCP中的容器注册表,因此,虽然我还没有机会对此进行测试(我不会&#39 ;在Google云外部有一个群集)该流程不应与pulling an image from a private registry.

的流程不同

在您的情况下,您可以使用gcr.io注册表的auth凭据创建一个秘密,如下所示:

kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
在这种情况下,

your-registry-server 可能是https://gcr.io/[your-project-id]

创建名为regcred的密码后,您可以配置pod以使用它从注册表中提取所需的图像,并添加imagePullSecrets,如下所示:

apiVersion: v1
kind: Pod
metadata:
  name: private-reg
spec:
  containers:
  - name: private-reg-container
    image: [The image you want to pull]
  imagePullSecrets:
  - name: regcred

然后,您可以通过部署此窗格来测试是否正确拉出了图像:

kubectl create -f [your pod yaml]

等待创建pod,然后使用kubectl describe pod private-reg描述pod并查看类似于以下内容的事件序列:

Events:
  Type    Reason                 Age   From                                                Message
  ----    ------                 ----  ----                                                -------
  Normal  Scheduled              4m    default-scheduler                                   Successfully assigned private-reg to gke-cluster-22-default-pool-e7830b6c-pxmt
  Normal  Pulling                4m    kubelet, gke-cluster-22-default-pool-e7830b6c-pxmt  pulling image "gcr.io/XXX/XXX:latest"
  Normal  Pulled                 3m    kubelet, gke-cluster-22-default-pool-e7830b6c-pxmt  Successfully pulled image ""gcr.io/XXX/XXX:latest"
  Normal  Created                3m    kubelet, gke-cluster-22-default-pool-e7830b6c-pxmt  Created container
  Normal  Started                3m    kubelet, gke-cluster-22-default-pool-e7830b6c-pxmt  Started container

答案 1 :(得分:1)

我们曾经在天蓝色的AKS集群上部署pod,以及过去的图像来自GCR。 这些是我们遵循的步骤。

  1. 在gcloud中创建一个具有gcr权限的服务帐户。
  2. 为服务帐户创建密钥。
  3. 添加kubectl secret。
  4. 在yaml中使用秘密
  5. gcloud iam service-accounts keys create gcr-docker-cred.json --iam-account=service-account-name@project-id.iam.gserviceaccount.com

    添加kubectl secret。

    kubectl create secret docker-registry gcriosecret --docker-server=https://gcr.io --docker-username=_json_key --docker-email=user@example.com --docker-password="$(cat gcr-docker-cred.json)"

    在yaml中使用secret

    imagePullSecrets: - name: gcriosecret

    blog可能是一个很好的帮助