IBM Cloud 中叢集存取問題的疑難排解 Kubernetes

請檢查您的使用者存取權限及資源群組設定,以解決在檢視或操作您的 IBM Cloud Kubernetes 叢集時所遇到的問題。

虛擬私有雲 經典基礎架構

您找不到叢集。 當您執行 ibmcloud oc cluster ls`` 時,輸出結果中並未列出該叢集。 或者,您無法與群組合作。 當您執行 ibmcloud oc cluster config 或其他與叢集相關的指令時,系統無法找到該叢集。

在 IBM Cloud 中,每個資源都必須位於資源群組中。 例如,叢集 mycluster 可能存在於 default 資源群組中。

當帳戶擁有者透過指派您「IBM Cloud」IAM 平台存取角色,來授予您對資源的存取權限時,該存取權限可能針對特定資源,也可能針對資源群組。 當您獲授與特定資源的存取權時,則無法存取資源群組。 在此情況下,您不需要將目標設為資源群組,即可使用您可以存取的叢集。 如果您的目標資源群組與叢集所在的群組不同,則該叢集的動作可能會失敗。 反之,當您在存取資源群組過程中獲授與資源的存取權時,必須將目標設為資源群組,才能使用該群組中的叢集。 如果您未將 CLI 階段作業的目標設為叢集所在的資源群組,則該叢集的動作可能會失敗。

如果您無法找到或使用叢集,您可能遇到以下其中一個問題:

  • 您可以存取叢集及叢集所在的資源群組,但 CLI 階段作業的目標不是叢集所在的資源群組。
  • 您可以存取叢集,但不是叢集所在資源群組的一部分。 CLI 階段作業的目標設為這個或另一個資源群組。
  • 您沒有叢集的存取權。

若要檢查使用者存取權,請執行下列動作:

  1. 請列出您所有的使用者權限。

    ibmcloud iam user-policies <your_user_name>
    
  2. 檢查您是否可以存取叢集及叢集所在的資源群組。

    1. 尋找具有下列項目的原則: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 步。
    
    
  3. 檢查您是否可以存取叢集,但不是作為叢集所在資源群組存取權的一部分。

    1. 尋找沒有 Policy IDRoles 欄位以外值的原則。 如果您具有此原則,則可以在存取整個帳戶的過程中存取叢集。 例如,以下政策表示某位使用者可存取該帳戶中的所有資源:
        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** 值為叢集 ID。 您可以執行 ` `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 的第三個項目符號點。
    
    
  4. 根據您的存取原則,選擇下列其中一個選項。

    • 如果您可以存取叢集及叢集所在的資源群組,請執行下列動作:
      1. 將目標設為資源群組。 在變更此資源群組之前,您無法在其他資源群組中使用叢集。
        ibmcloud target -g <resource_group>
        
      2. 將目標設為叢集。
        ibmcloud oc cluster config --cluster <cluster_name_or_ID>
        
    • 如果您可以存取叢集但無法存取叢集所在的資源群組,請執行下列動作:
      1. 不要將資源群組設為目標。 如果您已設定資源群組的目標,請移除目標。
        ibmcloud target --unset-resource-group
        
      2. 將目標設為叢集。
        ibmcloud oc cluster config --cluster <cluster_name_or_ID>
        
    • 如果您無法存取該叢集:
      1. 請您的帳戶擁有者為您指派該叢集的「IBM Cloud」IAM 平台存取角色
      2. 不要將資源群組設為目標。 如果您已設定資源群組的目標,請移除目標。
        ibmcloud target --unset-resource-group
        
      3. 將目標設為叢集。
        ibmcloud oc cluster config --cluster <cluster_name_or_ID>