【问题标题】:GKE pulling images from a private repository inside GCPGKE 从 GCP 内部的私有存储库中提取图像
【发布时间】:2021-02-15 18:55:31
【问题描述】:

我已经设置了一个私有容器注册表,它已成功与 bitbucket 集成。但是,我无法从我的 GKE 集群中提取图像。

我创建了一个角色为“Project Viewer”的服务帐户,以及该帐户的 json 密钥。然后我在运行的集群/命名空间中创建了秘密

kubectl create secret docker-registry gcr-json-key \
 --docker-server=gcr.io \
 --docker-username=_json_key \
 --docker-password="$(cat ~/code/bitbucket/miappsrl/miappnodeapi/secrets/registry/miapp-staging-e94050365be1.json)" \
 --docker-email=agusmiappgcp@gmail.com

在我添加的部署文件中

...
      imagePullSecrets:
    - name: gcr-json-key
...

但是当我应用部署时,我得到了

 ImagePullBackOff

当我执行kubectl describe pod <pod_name> 时,我看到了

Failed to pull image "gcr.io/miapp-staging/miappnodeapi": rpc error: code = Unknown desc = Error response from daemon: Get https://gcr.io/v2/: dial tcp: lookup gcr.io on 169.254.169.254:53: no such host

我无法意识到我缺少什么,我知道它可以解析集群内的 dns,但不确定我应该添加什么

【问题讨论】:

  • 是私有集群?你有网络政策吗?或任何安全配置?
  • @DavidC 感谢您的评论,我想我可能缺少在集群中设置网络。
  • 您能分享一下集群网络设置吗?比如它是一个私有集群还是你设置网络策略或 VPC 服务控制?查看下关于Setting up Container Registry or Artifact Registry for GKE private clusters的信息可能是这样的。
  • @DavidC 我认为你是对的,问题在于它是一个私有集群。我删除了,创建了一个新的(公共)并且我能够提取图像。下次创建私有集群时,我需要设置网络以使用容器注册表。谢谢
  • 我会在你的帖子上写一个答案(它不同于评论)以帮助其他用户解决同样的问题,如果这些信息可以帮助你解决你的问题,请随时投票给答案。

标签: kubernetes google-kubernetes-engine google-container-registry


【解决方案1】:

如果 GKE 集群设置为私有,您需要设置 DNS 以从 documentation 访问容器注册表:

要支持在服务边界内使用 Container Registry 或 Artifact Registry 的 GKE 私有集群,您首先需要配置 DNS 服务器,以便对注册表地址的请求解析为受限 VIP。您可以使用 Cloud DNS 私有 DNS 区域来执行此操作。

验证您是否将集群设置为私有。

【讨论】:

    猜你喜欢
    • 2017-07-05
    • 2020-11-02
    • 2022-06-24
    • 2021-12-10
    • 2018-05-20
    • 1970-01-01
    • 2011-01-27
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多