在 Kubernetes 容器存盤庫中,我將權限設定為 Private:

當我在集群上創建一個 pod 時,我得到了 pod 狀態結尾ImagePullBackOff,當我描述 pod 時,我看到:
Failed to pull image "gcr.io/REDACTED": rpc error: code = Unknown desc = Error response from daemon: pull access denied for gcr.io/REDACTED, repository does not exist or may require 'docker login': denied: Permission denied for "v11" from request "/v2/REDACTED/manifests/v11".
我當然登錄了。
docker login
Authenticating with existing credentials...
Login Succeeded
現在,如果我在我的 Container Repository 上啟用公共訪問(頂部影像),一切正常并且 pod 部署正確。但我不希望我的存盤庫公開。什么是保持我的容器存盤庫私有并且仍然能夠部署的正確方法。我很確定這在幾周前可以正常作業,除非我用我的服務帳戶搞砸了一些東西,盡管我不知道如何找出哪些服務帳戶正在用于這些權限。
uj5u.com熱心網友回復:
如果您的 GKE 版本 > 1.15,并且 Container Registry 在同一個專案中,并且 GKE 使用默認的 Compute Engine 服務帳戶 (SA),它應該可以開箱即用。
如果您在另一個專案中運行注冊表,或使用不同的服務帳戶,您應該給 SA 正確的權限(例如,roles/artifactregistry.reader)
一步一步的教程,所有不同的情況,它都出現在官方檔案中:https ://cloud.google.com/artifact-registry/docs/access-control#gcp
uj5u.com熱心網友回復:
要使用gcr.io或任何其他私有工件注冊表,您需要在 k8s 集群中創建一個Secret型別。docker-registry該密鑰將包含您的注冊表的憑據詳細資訊:
kubectl create secret docker-registry <secret-name> \
--docker-server=<server-name> \
--docker-username=<user-name> \
--docker-password=<user-password> \
--docker-email=<user-email-id>
在此之后,您需要在imagePullSecrets清單的屬性中指定上述機密,以便 k8s 能夠驗證和提取影像。
apiVersion: v1
kind: Pod
metadata:
name: pod1
namespace: default
spec:
containers:
- name: pod1
image: gcr.io/pod1:latest
imagePullSecrets:
- name: myregistrykey
從容器解決方案和官方 k8s檔案中查看本教程。
uj5u.com熱心網友回復:
GKE 使用附加到節點池的服務帳戶來授予對注冊表的訪問權限,但是,您必須確保也將集群的 OAuth 范圍設定https://www.googleapis.com/auth/devstorage.read_only為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/509964.html
