【发布时间】:2021-07-13 20:52:19
【问题描述】:
我有一个项目 A,我在其中创建了一个服务帐户。 我想在项目 B 中创建一个 GKE。
我按照此处列出的服务帐户模拟步骤https://cloud.google.com/iam/docs/impersonating-service-accounts
在项目 A 中, 项目 B 的默认服务帐户在我创建的服务帐户 my-service-account 上有角色/iam.serviceAccountTokenCreator 和角色/iam.serviceAccountUser
在项目 B 中, my-service-account 具有 Kubernetes 管理员角色
当我尝试创建时,我得到了错误
Error: Error waiting for creating GKE NodePool: All cluster resources were brought up, but: only 0 nodes out of 1 have registered; cluster may be unhealthy.
我正在使用 terraform 创建此集群,并且 terraform 使用的服务帐户具有 kubernetes 管理员和服务帐户用户角色。
这是它在控制台中显示的内容 GKE error
编辑:
我尝试使用 Gcloud 命令行创建 GKE
gcloud beta container --project "my-project" clusters create "test-gke-sa" --zone "us-west1-a" --no-enable-basic-auth --cluster-version "1.18.16-gke.502" --release-channel "regular" --machine-type "e2-standard-16" --image-type "COS" --disk-type "pd-standard" --disk-size "100" --metadata disable-legacy-endpoints=true --scopes "https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly","https://www.googleapis.com/auth/trace.append" --num-nodes "3" --enable-stackdriver-kubernetes --enable-private-nodes --master-ipv4-cidr "192.168.0.16/28" --enable-ip-alias --network "projects/infgprj-sbo-n-hostgs-gl-01/global/networks/my-network" --subnetwork "projects/my-network/regions/us-west1/subnetworks/my-subnetwork" --cluster-secondary-range-name "gke1-pods" --services-secondary-range-name "gke1-services" --default-max-pods-per-node "110" --no-enable-master-authorized-networks --addons HorizontalPodAutoscaling,HttpLoadBalancing,GcePersistentDiskCsiDriver --enable-autoupgrade --enable-autorepair --max-surge-upgrade 1 --max-unavailable-upgrade 0 --enable-shielded-nodes --shielded-secure-boot --node-locations "us-west1-a" --service-account="my-service-account@project-a.iam.gserviceaccount.com"
遇到同样的错误。 我看到创建了节点池,但没有创建节点。 (或者至少它们没有连接到节点池?)
这里有更多错误图片
解决方案:最后,我想出了什么问题。我只将令牌创建者角色授予默认服务帐户。当我也将相同的角色赋予默认服务代理时,它开始工作。所以基本上
role = "roles/iam.serviceAccountTokenCreator",
members = [
"serviceAccount:{project-number}-compute@developer.gserviceaccount.com",
"serviceAccount:service-{project-number}@container-engine-robot.iam.gserviceaccount.com",
"serviceAccount:service-{project-number}@compute-system.iam.gserviceaccount.com",
]
【问题讨论】:
-
您确定这是服务帐户问题吗?
-
我是这么认为的,因为如果我使用默认服务帐户,它会在没有错误的情况下创建。
标签: kubernetes google-cloud-platform google-kubernetes-engine