Kubernetes GKE上的pod在GCE上创建磁盘的权限
我正在做一份Kubernetes GKE上的pod在GCE上创建磁盘的权限,kubernetes,google-cloud-platform,google-compute-engine,google-kubernetes-engine,google-iam,Kubernetes,Google Cloud Platform,Google Compute Engine,Google Kubernetes Engine,Google Iam,我正在做一份kubernetes的工作,作为一名舵手预安装挂机在GKE上。 该作业使用google/cloudsdkimage,我希望它创建一个计算引擎持久磁盘 这是它的规范: spec: restartPolicy: OnFailure containers: - name: create-db-hook-container image: google/cloud-sdk:latest command: ["gclou
kubernetes
的工作,作为一名舵手
预安装
挂机在GKE上。
该作业使用google/cloudsdk
image,我希望它创建一个计算引擎持久磁盘
这是它的规范
:
spec:
restartPolicy: OnFailure
containers:
- name: create-db-hook-container
image: google/cloud-sdk:latest
command: ["gcloud"]
args: ["compute", "disks", "create", "--size={{ .Values.volumeMounts.gceDiskSize }}", "--zone={{ .Values.volumeMounts.gceDiskZone }}", "{{ .Values.volumeMounts.gceDiskName }}"]
但是,此操作失败,出现以下错误:
brazen-lobster-create-pd-hook-nc2v9 create-db-hook-container ERROR:
(gcloud.compute.disks.create) Could not fetch resource: brazen-lobster-create-pd-hook-nc2v9
create-db-hook-container
- Insufficient Permission: Request had insufficient authentication scopes.
brazen-lobster-create-pd-hook-nc2v9 create-db-hook-container
显然,我必须授予gcloud.compute.disks.create
权限
我的问题是,我必须向谁授予此许可
这是一个GCP IAM权限,因此我假设它不能专门授予k8s
资源(?),因此不能在k8s
RBAC的上下文中处理,对吗
edit:我创建了一个ComputeDiskCreate
自定义角色,该角色包含两个权限:
gcloud.compute.disks.create
gcloud.compute.disks.list
服务-2340842080428@container-engine robot.uam.gserviceaccount.com
我的IAM
谷歌云控制台已命名
Kubernetes发动机服务代理
但是结果仍然是一样的。在GKE中,集群中的所有节点实际上都是计算引擎VM实例。他们在创建时被分配了一个服务帐户,以向其他服务验证他们的身份。您可以通过检查相应的节点池来检查分配给节点的服务帐户 默认情况下,GKE节点被分配计算引擎默认服务帐户,看起来像
PROJECT\u编号-compute@developer.gserviceaccount.com
,除非您在创建群集/节点池时设置了另一个
对其他Google服务(如本例中的compute.disks.create
端点)的调用将来自节点,并使用相应的服务帐户凭据进行身份验证
因此,您应该向节点的服务帐户添加gcloud.compute.disks.create
权限(可能是PROJECT\u编号-compute@developer.gserviceaccount.com
)在开发人员控制台中
编辑:在进行任何身份验证之前,节点访问给定Google服务的能力由其自身定义。这是在节点池创建时定义的,无法编辑。您需要创建一个新的节点池,并确保授予它
https://www.googleapis.com/auth/compute
访问计算引擎方法的范围。然后,您可以指示您的特定pod。您不通过Kubernetes持久卷系统创建磁盘有什么原因吗?我想避免PVs/PVCs(这将是一个一次性过程),因此我选择了纯k8s
卷-->。除了gcloud compute disk create
,还有其他方法可以创建实际的持久磁盘吗?没有,pvc系统就是为了自动为您创建卷的。我尝试了您的建议,甚至将整个compute Storage Admin
角色分配给了计算引擎默认角色。现在我获得了-权限不足:请求的身份验证范围不足。
有什么想法吗?pkaramol@,我已更新了我的答案以解决身份验证范围问题。