gpt4 book ai didi

kubernetes - 在 GKE 集群中安装 Velero 时无法拉取镜像 "velero/velero-plugin-for-gcp:v1.1.0"

转载 作者:行者123 更新时间:2023-12-02 11:36:15 26 4
gpt4 key购买 nike

我正在尝试为 kubernetes 备份安装和配置 Velero。我关注了link在我的 GKE 集群中配置它。安装顺利,但 velero 无法正常工作。
我正在使用 google cloud shell 来运行我的所有命令(我已经在我的 google cloud shell 中安装并配置了 velero 客户端)
在进一步检查 velero 部署和 velero pod 时,我发现它无法从 docker 存储库中提取图像。

kubectl get pods -n velero
NAME READY STATUS RESTARTS AGE
velero-5489b955f6-kqb7z 0/1 Init:ErrImagePull 0 20s
来自 velero pod 的错误 (kubectl describe pod)
    Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 38s default-scheduler Successfully assigned velero/velero-5489b955f6-kqb7z to gke-gke-cluster1-default-pool-a354fba3-8674
Warning Failed 22s kubelet, gke-gke-cluster1-default-pool-a354fba3-8674 Failed to pull image "velero/velero-plugin-for-gcp:v1.1.0": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
Warning Failed 22s kubelet, gke-gke-cluster1-default-pool-a354fba3-8674 Error: ErrImagePull
Normal BackOff 21s kubelet, gke-gke-cluster1-default-pool-a354fba3-8674 Back-off pulling image "velero/velero-plugin-for-gcp:v1.1.0"
Warning Failed 21s kubelet, gke-gke-cluster1-default-pool-a354fba3-8674 Error: ImagePullBackOff
Normal Pulling 8s (x2 over 37s) kubelet, gke-gke-cluster1-default-pool-a354fba3-8674 Pulling image "velero/velero-plugin-for-gcp:v1.1.0"
用于安装 velero 的命令:(一些值作为变量给出)
velero install \
--provider gcp \
--plugins velero/velero-plugin-for-gcp:v1.1.0 \
--bucket $storagebucket \
--secret-file ~/velero-backup-storage-sa-key.json
Velero 版本
velero version
Client:
Version: v1.4.2
Git commit: 56a08a4d695d893f0863f697c2f926e27d70c0c5
<error getting server version: timed out waiting for server status request to be processed>
GKE 版本
v1.15.12-gke.2

最佳答案

Isn't this a Private Cluster ? – mario 31 mins ago

@mario this is a private cluster but I can deploy other services without any issues (for eg: I have deployed nginx successfully) –Sreesan 15 mins ago


嗯,这是一个 know limitationGKE Private Clusters .正如您在 documentation 中所读到的那样:

Can't pull image from public Docker Hub

Symptoms

A Pod running in your cluster displays a warning in kubectl describe such as Failed to pull image: rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

Potential causes

Nodes in a private cluster do not have outbound access to the publicinternet. They have limited access to Google APIs and services,including Container Registry.

Resolution

You cannot fetch images directly from Docker Hub. Instead, use imageshosted on Container Registry. Note that while Container Registry'sDocker Hubmirroris accessible from a private cluster, it should not be exclusivelyrelied upon. The mirror is only a cache, so images are periodicallyremoved, and a private cluster is not able to fall back to Docker Hub.


您也可以将其与 this 进行比较回答。
通过做一个简单的实验,您可以轻松地自行验证。尝试运行两个不同的 nginx 部署。首先基于图片 nginx (等于 nginx:latest )和第二个基于 nginx:1.14.2 .
虽然第一种情况是完全可行的,因为 nginx:latest图片可以从 拉取Container Registry 的 Docker Hub 镜像 可以从私有(private)集群访问,任何拉动 nginx:1.14.2 的尝试将失败,您将在 Pod 中看到事件。这是因为 kubelet 中找不到此版本的图像GCR 它会尝试从公共(public) docker 注册表 ( https://registry-1.docker.io/v2/ ) 中提取它,该注册表位于 专用集群 不可能。 “镜像只是一个缓存,所以镜像会被定期删除,私有(private)集群无法回退到 Docker Hub。” - 你可以在文档中阅读。
如果您仍有疑问,只需 ssh进入您的节点并尝试运行以下命令:
curl https://cloud.google.com/container-registry/

curl https://registry-1.docker.io/v2/
虽然第一个完美运行,但第二个最终会失败:
curl: (7) Failed to connect to registry-1.docker.io port 443: Connection timed out
原因 ? - “私有(private)集群中的节点没有对公共(public)互联网的出站访问。”
解决方案 ?
您可以在 中搜索当前可用的内容。 GCR here .
在许多情况下,如果您不指定确切的版本(默认使用 latest 标签),您应该能够获得所需的图像。虽然它可以帮助 nginx , 不幸的是没有 velero/velero-plugin-for-gcp 的版本目前在 Google Container Registry 的 Docker Hub 镜像中可用。
Granting private nodes outbound internet access通过使用 Cloud NAT似乎是唯一可以应用于您的案例的合理解决方案。

关于kubernetes - 在 GKE 集群中安装 Velero 时无法拉取镜像 "velero/velero-plugin-for-gcp:v1.1.0",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63411204/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com