1

我们拥有在本地运行的 kubernetes 集群,并且我们拥有 GCR 私有存储库。那么我们如何将该私有存储库访问到我的本地 kubernetes 集群,据我所知,我们可以使用 gcloud-sdk 但不可能在 kubernetes 集群的每个节点上安装 gcloud-sdk。

4

2 回答 2

3

我们曾经在 azure AKS 集群上部署 pod,而图像曾经来自 GCR。这些是我们遵循的步骤。

  1. 在 gcloud 中创建一个具有 gcr 权限的服务帐户。
  2. 为服务帐户创建密钥。
  3. 添加 kubectl 密码。
  4. 在 yaml 中使用秘密

gcloud iam service-accounts keys create gcr-docker-cred.json --iam-account=service-account-name@project-id.iam.gserviceaccount.com

添加 kubectl 密码。

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 中使用秘密

imagePullSecrets: - name: gcriosecret

这个博客可能是一个很好的帮助

于 2018-05-09T08:54:37.500 回答
1

在 GKE 或 GCE 上运行的 Kubernetes 集群原生支持访问容器注册表,无需进一步配置。

正如您所提到的,您正在运行一个本地集群,您没有运行任何这些,只使用 GCP 的容器注册表,所以,虽然我没有机会测试这个(我在 Google 之外没有集群Cloud)该过程不应与从私有注册表中提取图像的过程不同。

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

kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>

在这种情况下,您的注册表服务器可能是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

然后你可以通过部署这个 pod 来测试镜像是否被正确拉取:

kubectl create -f [your pod yaml]

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

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
于 2018-05-07T12:33:43.093 回答