IBM Cloud 中集群访问问题的故障排除 Kubernetes
通过检查您的用户访问权限和资源组配置,解决在查看或操作您的 IBM Cloud Kubernetes 集群时遇到的问题。
虚拟私有云 传统基础设施
你找不到集群。 运行 ibmcloud oc cluster ls 时,输出中未列出该集群。 或者,你无法与集群一起工作。 运行 ibmcloud oc cluster config 或其他与集群相关的命令时,无法找到该集群。
在 IBM Cloud 中,每个资源都必须位于资源组中。 例如,集群 mycluster 可能存在于 default 资源组中。
当账户所有者通过向您授予“IBM Cloud”IAM平台访问角色来授予您对资源的访问权限时,该访问权限可能针对特定资源,也可能针对资源组。 授予您对特定资源的访问权时,您无权访问资源组。 在这种情况下,您无需将资源组设定为目标就可以使用您有权访问的集群。 如果设定为目标的资源组不是集群所在的资源组,那么针对该集群的操作会失败。 反之,授予您对资源的访问权以作为对资源组访问权的一部分时,必须将资源组设定为目标,才能使用该组中的集群。 如果未将 CLI 会话的目标设定为集群所在的资源组,那么针对该集群的操作会失败。
如果您无法找到或无法使用某个集群,您可能遇到了以下问题之一:
- 您有权访问集群和集群所在的资源组,但 CLI 会话的目标未设定为集群所在的资源组。
- 您有权访问集群,但无权访问集群所在的资源组。 CLI 会话的目标设定为此资源组或其他资源组。
- 您无权访问集群。
要检查用户访问许可权,请执行以下操作:
-
列出您所有的用户权限。
ibmcloud iam user-policies <your_user_name> -
检查您是否有权访问集群以及集群所在的资源组。
- 查找具有值为集群资源组的 Resource Group Name 以及值为 ** 的 **Memo
Policy applies to the resource group的策略。 如果具有此策略,说明您有权访问资源组。 例如,以下策略表明某用户有权访问test-rg资源组:
Policy ID: 3ec2c069-fc64-4916-af9e-e6f318e2a16c Roles: Viewer Resources: Resource Group ID 50c9b81c983e438b8e42b2e8eca04065 Resource Group Name test-rg Memo Policy applies to the resource group ``` 2. 查找具有值为集群资源组的 **Resource Group Name**、值为 ** 或没有值的 **Service Name`containers-kubernetes`,以及值为 ** 的 **Memo`Policy applies to the resource(s) within the resource group` 的策略。 如果您拥有此策略,则可以访问集群或资源组内的所有资源。 例如,以下策略表明某用户有权访问 `test-rg` 资源组中的集群: ```sh {: screen} Policy ID: e0ad889d-56ba-416c-89ae-a03f3cd8eeea Roles: Administrator Resources: Resource Group ID a8a12accd63b437bbd6d58fb6a462ca7 Resource Group Name test-rg Service Name containers-kubernetes Service Instance Region Resource Type Resource Memo Policy applies to the resource(s) within the resource group ``` 3. 如果您同时拥有这两个策略,请跳至步骤 4 的第一个项目符号项。 如果您没有步骤 2a 中的策略,但确实有步骤 2b 中的策略,请跳至步骤 4 的第二个项目符号项。 如果您没有上述任何一项保单,请继续执行第 3 步。 - 查找具有值为集群资源组的 Resource Group Name 以及值为 ** 的 **Memo
-
检查您是否有权访问集群,但无权访问集群所在的资源组。
- 查找除了 Policy ID 和 Roles 字段外不包含其他任何值的策略。 如果具有此策略,那么您有权访问集群,这是对整个帐户的访问权的一部分。 例如,以下策略表明某用户有权访问该账户中的所有资源:
Policy ID: 8898bdfd-d520-49a7-85f8-c0d382c4934e Roles: Administrator, Manager Resources: Service Name Service Instance Region Resource Type Resource ``` 2. 查找具有值为 ** 的 **Service Name`containers-kubernetes` 以及值为集群标识的 **Service Instance** 的策略。 您可以通过运行 `ibmcloud oc cluster get --cluster <cluster_name>` 来查找集群 ID。 例如,以下策略表明某用户有权访问某个特定集群: ```sh {: screen} Policy ID: 140555ce-93ac-4fb2-b15d-6ad726795d90 Roles: Administrator Resources: Service Name containers-kubernetes Service Instance df253b6025d64944ab99ed63bb4567b6 Region Resource Type Resource ``` 3. 如果您有其中任一策略,请跳至步骤 4 的第二个项目符号点。 如果您没有任何一个策略,请跳至步骤 4 的第三个项目符号点。 -
根据您的访问策略,选择下列其中一个选项。
- 检查您是否有权访问集群以及集群所在的资源组:
- 将资源组设定为目标。 除非修改此资源组,否则无法在其他资源组中使用集群。
ibmcloud target -g <resource_group> - 将集群设定为目标。
ibmcloud oc cluster config --cluster <cluster_name_or_ID>
- 将资源组设定为目标。 除非修改此资源组,否则无法在其他资源组中使用集群。
- 如果您有权访问集群,但无权访问集群所在的资源组:
- 不要将资源组设定为目标。 如果您已将资源组作为目标,请除去该目标。
ibmcloud target --unset-resource-group - 将集群设定为目标。
ibmcloud oc cluster config --cluster <cluster_name_or_ID>
- 不要将资源组设定为目标。 如果您已将资源组作为目标,请除去该目标。
- 如果您无法访问该集群:
- 请联系您的账户所有者,让其为您分配该集群的 “IBM Cloud”IAM平台访问角色。
- 不要将资源组设定为目标。 如果您已将资源组作为目标,请除去该目标。
ibmcloud target --unset-resource-group - 将集群设定为目标。
ibmcloud oc cluster config --cluster <cluster_name_or_ID>
- 检查您是否有权访问集群以及集群所在的资源组: