在Google Kubernetes Engine的自动驾驶模式下,如何为节点授予Google Storage写入权限

46次阅读
没有评论

问题描述

在尝试将工作流编排器Snakemake与Google Kubernetes Engine(GKE)自动驾驶集群一起使用时遇到了问题。他的工作流需要将文件上传到同一项目中的Google Cloud Storage存储桶。Snakemake和GKE文档都指定在创建集群时应该指定Google Storage读写权限,可以通过使用--scopes storage-rw参数实现。

用户尝试了在自动驾驶集群上使用这个参数,但仍然收到与Google Storage读写权限不足相关的Snakemake错误消息。问题如下所示:

google.api_core.exceptions.Forbidden: 403 GET https://storage.googleapis.com/storage/v1/b/kubernetes-nccs-npc2/o/whoami.txt?fields=name&prettyPrint=false: Caller does not have storage.objects.get access to the Google Cloud Storage object.

用户怀疑--scopes storage-rw参数在自动驾驶集群的创建过程中并没有生效。用户想要知道是否正确,并且如果是这样的话,如何为自动驾驶集群授予Google Storage读写权限。

解决方案

请注意以下操作可能涉及到版本差异或特定环境,务必谨慎操作。

方案1:检查服务账号权限

首先,需要确保正在运行集群的服务账号具有适当的权限。错误信息显示缺少storage.objects.get权限,因此需要确保该权限已经正确分配给服务账号。

  1. 使用以下命令获取服务账号的IAM策略(假设您的项目名为project-name):
    bash
    gcloud projects get-iam-policy project-name

  2. 检查返回的IAM策略,确保服务账号拥有storage.objects.get权限。如果缺少该权限,可以使用以下命令为服务账号添加权限(假设服务账号名称为your-service-account):
    bash
    gcloud projects add-iam-policy-binding project-name --member serviceAccount:your-service-account --role roles/storage.objectViewer

方案2:使用IAM工具

Google Cloud提供了IAM工具,可以更精细地管理权限。您可以使用这些工具为服务账号分配所需的权限。

  1. 使用以下命令获取服务账号的IAM策略(假设您的项目名为project-name,服务账号名称为your-service-account):
    bash
    gcloud iam service-accounts get-iam-policy your-service-account --project=project-name

  2. 检查返回的IAM策略,确保服务账号拥有roles/storage.objectViewer权限。如果缺少该权限,可以使用以下命令为服务账号添加权限:
    bash
    gcloud iam service-accounts add-iam-policy-binding your-service-account --project=project-name --role=roles/storage.objectViewer --member=serviceAccount:your-service-account

方案3:参考官方文档

根据Google Cloud的建议,您可以参考GKE文档和Snakemake文档,以确保正确配置权限和服务账号。

  1. 参考GKE文档中关于访问范围(scopes)的部分,确保正确配置集群创建命令:
    GKE Access Scopes

  2. 参考Snakemake文档中关于在Google Cloud上设置Kubernetes集群的部分,确保您按照指导配置了所需的权限:
    Snakemake Cloud Execution

方案4:联系Google支持

如果您尝试了上述方法仍然无法解决问题,建议联系Google Cloud支持团队,他们可以为您提供进一步的帮助和支持。

请注意,以上解决方案可能涉及多个步骤,每个步骤都需要仔细验证和调试。在进行任何更改之前,请确保您已经了解了所做操作的影响和潜在风险。

总结

在使用Google Kubernetes Engine的自动驾驶模式时,为节点授予Google Storage写入权限可能涉及到适当的IAM权限配置。您可以通过检查服务账号的IAM策略,使用IAM工具分配权限,参考官方文档以及联系Google支持来解决问题。请根据实际情况选择合适的解决方案,并在操作之前充分了解相关操作的影响和风险。

请注意,本文提供的解决方案仅供参考,请根据实际情况和需求进行适当调整和操作。在进行任何更改之前,请务必做好备份并谨慎操作。

正文完