使用 Google Cloud 控制台建立管理員叢集

使用 Google Cloud 控制台為 Google Distributed Cloud 軟體建立管理員叢集,僅限 VMware 使用圖形使用者介面取得結構化指引。您也可以使用 gkectlGoogle Cloud console 建立管理員叢集。

事前準備

  • 請確認您已設定管理員工作站,並能登入,如「建立管理員工作站」一文所述。

  • 請確認服務帳戶的 JSON 金鑰檔案位於管理工作站。

  • 查看 IP 位址規劃文件。確認您有足夠的 IP 位址,可供三個控制層節點和一個控制層 VIP 使用。如果您打算建立任何kubeception 使用者叢集,則必須為這些使用者叢集的控制層節點預留充足的 IP 位址。

  • 請參閱負載平衡總覽,重新考慮要使用的負載平衡器類型。如果是手動負載平衡器,您必須先設定負載平衡器,才能建立管理員叢集。

  • 如果您使用 gkectl 建立管理員叢集,請決定要為 Google Distributed Cloud 元件使用公開或私有登錄檔。如要瞭解如何使用私密 Docker 登錄檔,請參閱 privateRegistry。Terraform 和 Google Cloud 控制台都不支援使用私人 Docker 登錄檔做為系統元件。

  • 決定要在管理員叢集節點上執行的作業系統類型。

  • 如果貴機構規定輸出流量必須通過 Proxy 伺服器,請務必將必要 API 和 Artifact Registry 位址加入許可清單

  • 在 1.29 以上版本中,預設會啟用伺服器端預檢。伺服器端預檢需要額外的防火牆規則。在「管理員叢集的防火牆規則」中,搜尋「Preflight checks」,並確認已設定所有必要的防火牆規則。伺服器端前置檢查會在啟動叢集上執行,而不是在管理員工作站本機執行。

程序總覽

建立管理員叢集前,您需要在管理工作站上執行 gkectl register bootstrap 指令。這個指令會在管理員工作站上部署 Docker 中的 Kubernetes (kind) 叢集。這個啟動叢集會託管建立管理員叢集所需的 Kubernetes 控制器。建立管理員叢集時,啟動叢集上的控制器會佈建節點、執行預檢,並將管理員叢集註冊至機群。管理員叢集建立完成後,啟動叢集就會自動刪除。

使用控制台建立管理員叢集的大致步驟如下:

  1. 在控制台中,您會輸入 gkectl register bootstrap 需要的資訊。控制台會顯示 gkectl register bootstrap 指令,以及您輸入的資訊。顯示的指令也包含路徑的旗標,您必須先指定路徑,才能執行指令。

  2. 在管理員工作站上,您會執行 gkectl register bootstrap 來建立啟動叢集。指令完成啟動叢集建立作業後,輸出內容會通知您完成管理員叢集設定。這個程序會持續執行,直到建立管理員叢集為止。

  3. 返回控制台,完成建立叢集所需的資訊。叢集建立期間,gkectl register bootstrap 指令會輸出進度資訊,並在管理員工作站上寫入記錄。管理員叢集建立完畢後,系統會自動刪除啟動叢集。

開始設定叢集

  1. 前往控制台的「Create a cluster on VMware」(在 VMware 上建立叢集) 頁面。

    前往「建立 VMware 叢集」

  2. 選取要建立叢集的 Google Cloud 專案。

    在下一個章節中建立啟動程序叢集時,所選專案 ID 會顯示在 --project-id 旗標的 gkectl register bootstrap 指令中。

  3. 確認已選取「建立管理員叢集」

  4. 按一下「下一步:安裝啟動環境」

安裝啟動環境

在本節中,您會輸入 gkectl register bootstrap 指令所需的資訊。在 UI 欄位中輸入值時,控制台會將值複製到 gkectl register bootstrap 指令的對應旗標,並顯示在頁面底部的「Bootstrap environment from admin workstation」(管理工作站的啟動程序環境) 區段。

啟動環境基本資訊

  1. 輸入管理員叢集的名稱。控制台會使用叢集名稱做為頁面底部顯示的 gkectl register bootstrap 指令中 --target-cluster-name 標記的值。名稱長度上限為 20 個字元。

  2. 在「API Location」(API 位置)Google Cloud 欄位中,從清單中選取 Google Cloud 區域這項設定會指定下列 API 和服務的執行區域:

    • GKE On-Prem API (gkeonprem.googleapis.com)
    • 車隊服務 (gkehub.googleapis.com)
    • 連結服務 (gkeconnect.googleapis.com)

    這項設定也會控管下列項目的儲存區域:

    • GKE On-Prem API 管理叢集生命週期所需的叢集中繼資料
    • 系統元件的 Cloud Logging 和 Cloud Monitoring 資料
    • Cloud 稽核記錄建立的管理員稽核記錄

    Google Cloud API Location」欄位對應於 gkectl register bootstrap 指令中的 --location 旗標。

  3. 在「管理員叢集版本」欄位中,輸入要用於建立叢集的版本。您在此選取的版本必須與 gkectl register bootstrap 指令中 --bundle-path 旗標指定的套件版本相符。

vCenter 設定

如果您使用 gkeadm 建立管理工作站,請開啟管理工作站設定檔,以便將 vCenter 區段中的值複製到控制台的欄位。請注意,產生的管理員叢集設定檔也包含這項資訊。

本節中的大部分欄位都無法變更。如要瞭解欄位是否可變動,請參閱管理員叢集設定檔參考資料中的vCenter部分

  1. 在「Address」(地址) 欄位中,輸入 vCenter Server 位址

    • 管理員工作站設定檔:使用 vCenter.credentials.address 欄位中的值。

    • 「地址」欄位對應於 gkectl register bootstrap 指令中的 --vcenter-address 旗標。

  2. 在「Datacenter」(資料中心) 欄位中,輸入 vCenter 資料中心的名稱。

    • 管理員工作站設定檔:使用 vCenter.datacenter 欄位中的值。

    • 「資料中心」欄位對應於 gkectl register bootstrap 指令中的 --vcenter-datacenter 標記。

  3. 在「叢集名稱」欄位中,輸入 vCenter 叢集的名稱。

    • 管理員工作站設定檔:使用 vCenter.cluster 欄位中的值。

    • 「叢集名稱」欄位對應於 gkectl register bootstrap 指令中的 --vcenter-cluster 標記。

  4. 在「Resource pool」(資源集區) 欄位中,輸入 vCenter 資源集區的名稱或路徑。

    • 管理員工作站設定檔:使用 vCenter.resourcePool 欄位中的值。

    • 「資源集區」欄位對應於 gkectl register bootstrap 指令中的 --vcenter-resource-pool 旗標。

  5. 輸入下列任一選項,設定儲存空間選項:

    • 「資料儲存庫」欄位:輸入 vCenter 資料儲存庫的名稱。您指定的值必須是名稱,而非路徑。如要輸入路徑,請在「Folder」(資料夾) 欄位中輸入。

      • 管理員工作站設定檔:使用 vCenter.datastore 欄位中的值。

      • 「Datastore」欄位對應於 gkectl register bootstrap 指令中的 --vcenter-datastore 旗標。

    • 「儲存空間政策名稱」欄位:輸入叢集節點的VM 儲存空間政策名稱。詳情請參閱「設定儲存空間政策」。

      • 管理員工作站設定檔:使用 vCenter.storagePolicyName 欄位中的值。

      • 「儲存空間政策名稱」欄位對應於 gkectl register bootstrap 指令中的 --vcenter-storage-policy 標記。

    您必須在「Datastore」(資料存放區) 欄位或「Storage Policy Name」(儲存空間政策名稱) 欄位中輸入值,但不能同時輸入。

  6. (選用) 在「Folder」(資料夾) 欄位中,輸入要存放叢集 VM 的 vCenter 資料夾名稱。

    • 管理員工作站設定檔:使用 vCenter.folder 欄位中的值。

    • 「資料夾」欄位對應於 gkectl register bootstrap 指令中的 --vcenter-folder 旗標。

  7. 在「Network」(網路) 欄位中,輸入 vCenter 網路的名稱。

    • 管理員工作站設定檔:使用 vCenter.network 欄位中的值。

    • 「網路」欄位對應於 gkectl register bootstrap 指令中的 --vcenter-network 旗標。

  8. 在「CA certificate path」欄位中,輸入 vCenter Server 的根 CA 憑證路徑。

    • 如果您使用 gkeadm 建立管理員工作站,gkeadm 會將您在本機的管理員工作站上擁有的 CA 憑證檔案複製到管理員工作站。

    • 「CA 憑證路徑」欄位對應於 gkectl register bootstrap 指令中的 --vcenter-ca-cert-path

取得 CA 憑證

建立啟動程序叢集後,您需要在「叢集基本資訊」頁面的「CA 憑證資料」欄位中,提供 PEM 格式的 vCenter CA 憑證。執行下列指令來顯示憑證:

cat CA_CERT_PATH

CA_CERT_PATH 替換為 vCenter Server 根層級 CA 憑證的路徑。如果您在本機執行這項指令,請使用管理員工作站設定檔中 vCenter.caCertPath 的路徑。

將整個憑證複製到文字編輯器,以便在建立啟動叢集後,貼到「叢集基本資訊」頁面的「CA 憑證資料」欄位。

從管理員工作站啟動環境

執行 gkectl register bootstrap 指令時,系統會提示您輸入 vCenter 帳戶的使用者名稱和密碼。請確認您已備妥憑證。如果您使用 gkeadm 建立管理員工作站,使用者名稱和密碼會位於 credential.yaml 檔案中。

  1. 捲動至「從管理員工作站啟動環境」部分,顯示 gkectl register bootstrap 指令。

    前往管理員工作站建立啟動叢集時,請勿關閉這個頁面。

  2. gkectl register bootstrap 指令複製並貼到文字編輯器,以便為下列標記指定值:

        ./gkectl register bootstrap \
          ...
          --bundle-path=BUNDLE_PATH \
          ...
          --component-access-service-account-key-path=COMPONENT_ACCESS_SA_PATH \
          --register-service-account-key-path=CONNECT_REGISTER_SA_PATH \
          --stackdriver-service-account-key-path=LOG_MON_SA_PATH \
          --cloud-audit-logging-service-account-key-path=CLOUD_AUDIT_SA_PATH \
          --admin-kubeconfig-out=KUBECONFIG_NAME
    

    將下列項目替換為管理員工作站路徑:

    • BUNDLE_PATH:套件檔案的路徑。如果您使用 gkeadm 建立管理員工作站,套裝組合檔案會位於 /var/lib/gke/bundles/ 中。檔案名稱取決於 Google Distributed Cloud 版本,例如 gke-onprem-vsphere-1.31.0-gke.889-full.tgz
    • COMPONENT_ACCESS_SA_PATH:元件存取服務帳戶的金鑰檔案路徑。
    • CONNECT_REGISTER_SA_PATH:connect-register 服務帳戶的金鑰檔案路徑。
    • LOG_MON_SA_PATH:記錄監控服務帳戶的金鑰檔案路徑。
    • CLOUD_AUDIT_SA_PATH:稽核記錄服務帳戶的路徑。如果您未建立稽核記錄服務帳戶,請指定記錄監控服務帳戶的金鑰檔案路徑。
    • KUBECONFIG_NAMEgkectl register bootstrap 指令建立的 kubeconfig 檔案名稱。如果未指定這個旗標,指令會在目前的工作目錄中建立名為 kubeconfig 的檔案。如果已有名為 kubeconfig 的檔案,這項指令會覆寫該檔案。

    此外,如果您使用 gkeadm 建立管理員工作站,gkectl 會下載至 /usr/bin/ 目錄。在本例中,請從指令開頭移除 ./,因為 gkectl 不在目前的工作目錄中。

  3. 使用 SSH 連線至管理工作站。

  4. 複製指令並貼到管理工作站的終端機視窗。

  5. 出現提示時,輸入 (或複製並貼上) vCenter 使用者名稱。使用者名稱不會回顯到畫面上。

  6. 出現提示時,請輸入 (或複製並貼上) vCenter 密碼。密碼不會回顯到畫面上。

這項指令會執行多項驗證。gkectl 成功建立啟動程序叢集後,畫面會顯示類似以下的輸出內容,為方便閱讀,部分內容已遭截斷:

Running workstation validations
- Validation Category: Workstation
    - [SUCCESS] Workstation OS
    - [SUCCESS] Workstation Hardware
    - [SUCCESS] Workstation Package
    - [SUCCESS] Workstation NTP
    - [SUCCESS] Workstation Docker
...
All validation results were SUCCESS.
Unpacking GKE on-prem bundle: /var/lib/gke/bundles/gke-onprem-vsphere-1.31.0-gke.889-full.tgz
...
Successfully created and registered the bootstrap cluster
...
Waiting for preflight checks to run or OnPremAdminCluster to be applied...... -

這個程序會持續執行,直到建立管理員叢集為止。

如果在建立管理員叢集前結束 gkectl register bootstrap 指令,管理員叢集建立作業就會失敗,您必須使用下列指令刪除啟動叢集:

gkectl delete bootstrap \
    --target-cluster-name=ADMIN_CLUSTER_NAME \
    --project-id=PROJECT_ID \
    --location=REGION \
     --register-service-account-key-path=CONNECT_REGISTER_SA_PATH

完成管理員叢集設定

返回控制台並執行下列步驟:

  1. 在「Install bootstrap environment」(安裝啟動程序環境) 頁面上,按一下「Check Connection」(檢查連線)

    成功後,主控台會顯示「Connection established」(已建立連線)

    必須先建立與啟動程序叢集的連線,才能繼續。如果連線未建立,請檢查您為 gkectl register bootstrap 指令指定的引數:

    • 請確認 --target-cluster-name 的值與「Bootstrap environment basics」(啟動環境基本資訊) 部分顯示的「Admin cluster name」(管理員叢集名稱) 相符。

    • 確認 --project-id 的值與您在控制台中選取的專案 ID 相符。

    如要變更啟動程序叢集名稱、專案 ID 或其他標記值,請按照下列步驟操作:

    1. 輸入 Ctrl-C 即可退出 gkectl register bootstrap
    2. 刪除啟動叢集:

      gkectl delete bootstrap \
        --target-cluster-name=ADMIN_CLUSTER_NAME \
        --project-id=PROJECT_ID \
        --location=REGION \
        --register-service-account-key-path=CONNECT_REGISTER_SA_PATH
      
    3. 重新執行 gkectl register bootstrap 指令。

  2. 點選「下一步:叢集基本資訊」,開始設定管理員叢集。

叢集基本資訊

  1. 在「CA certificate data」(CA 憑證資料) 欄位中,複製並貼上 PEM 格式的完整 vCenter CA 憑證,如先前「取得 CA 憑證」一節所述。

  2. 在「授權」部分,輸入要授予 Kubernetes 唯讀 clusterrole/view 角色的使用者電子郵件地址。請注意,系統會自動新增您的電子郵件地址。套用的角色式存取控管 (RBAC) 政策,可讓使用者透過連線閘道執行唯讀指令。

  3. 按一下「Next Control Plane」(下一個控制平面)

控制層

  1. 查看「控制層」部分的預設設定,並視需要變更。

  2. 在「控制層節點 IP」部分,在下列欄位中輸入 IP 位址:

    • 閘道:叢集節點所在子網路的預設閘道 IP 位址。

    • 網路遮罩:叢集節點所在子網路的網路遮罩。

    • IP 位址:輸入 IP 位址,並視需要輸入三個控制層節點的主機名稱。

  3. 點選「下一步:網路」

網路

在本節中,您將指定建立管理員叢集所需的網路資訊。

  1. 在「服務和 Pod CIDR」部分,您可以接受 Kubernetes 服務和 Pod IP 位址範圍的預設值,也可以輸入不同的 CIDR 位址範圍。

    • 服務 CIDR:最小可能範圍:/24。最大可能範圍: /12

    • Pod CIDR:最小可能範圍:/18。最大可能範圍: /8`。

  2. 在「主機設定」部分中,指定 NTP 伺服器、DNS 伺服器,以及叢集節點 VM 使用的 DNS 搜尋網域 (選用)。叢集建立後即無法修改這些值。

  3. 按一下「下一步:負載平衡器」

負載平衡器

在本節中,您將選取要使用的負載平衡器類型。詳情請參閱負載平衡總覽

  1. 在「負載平衡器類型」清單中,選取負載平衡器:

    • 隨附於 MetalLB:MetalLB 負載平衡器隨附於,且所需設定比手動負載平衡少。MetalLB 元件會在叢集節點上執行,因此您不必為負載平衡器建立個別的 VM。

    • 手動:只要在建立叢集設定負載平衡器,即可使用任何負載平衡器。使用手動設定的負載平衡器時,您必須設定虛擬 IP (VIP)、節點位址和 nodePort 值之間的對應。

  2. 在「控制層 VIP」欄位中,輸入 Kubernetes API 伺服器接收流量時要使用的 VIP。

  3. 按一下「驗證並建立」

    主控台會顯示狀態訊息,同時驗證設定並在資料中心建立叢集。

    如果設定有問題,控制台會顯示錯誤訊息,您應該能據此修正設定問題,然後再次嘗試建立叢集。

管理員工作站會輸出叢集建立程序的詳細資料。如果預檢通過,您會看到類似以下的畫面:

[2023-03-22 23:12:47+0000] Waiting for cluster kubeconfig to become ready OK
[2023-03-22 23:15:47+0000] Writing kubeconfig file
[2023-03-22 23:15:47+0000] kubeconfig of cluster being created is present at gkectl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig
[2023-03-22 23:15:47+0000] Please restrict access to this file as it contains authentication credentials of your cluster.
[2023-03-22 23:15:47+0000] Waiting for cluster to become ready OK
[2023-03-22 23:20:17+0000] Please run
[2023-03-22 23:20:17+0000] kubectl --kubeconfig gkectl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig get nodes
[2023-03-22 23:20:17+0000] to get cluster nodes status.
[2023-03-22 23:20:17+0000] Waiting for node pools to become ready OK
[2023-03-22 23:20:37+0000] Waiting for metrics to become ready in GCP OK
[2023-03-22 23:25:38+0000] Waiting for cluster API provider to install in the created admin cluster OK
[2023-03-22 23:25:48+0000] Moving admin cluster resources to the created admin cluster
[2023-03-22 23:25:51+0000] Waiting for node update jobs to finish OK
[2023-03-22 23:27:41+0000] Flushing logs... OK
[2023-03-22 23:27:41+0000] Deleting membership... OK
[2023-03-22 23:27:42+0000] Deleting bootstrap cluster.

連線至管理員叢集

gkectl register bootstrap 指令會在管理員工作站上建立管理員叢集的 kubeconfig 檔案。如果您在執行 gkectl register bootstrap 時未指定 --admin-kubeconfig-out 旗標,指令會在您執行指令的目錄中,建立名為 kubeconfig 的 kubeconfig 檔案。

您必須限制這個 kubeconfig 的存取權,因為其中包含叢集的驗證憑證。

此外,您也可以透過連線閘道執行唯讀 kubectl 指令。

  1. 在安裝 gcloud CLI 的電腦上執行下列指令,取得可透過連線閘道存取叢集的 kubeconfig 項目。

    gcloud container fleet memberships get-credentials ADMIN_CLUSTER_NAME \
        --project=PROJECT_ID
    

    輸出結果會與下列內容相似:

    Starting to build Gateway kubeconfig...
    Current project_id: PROJECT_ID
    A new kubeconfig entry "connectgateway_PROJECT_ID_global_ADMIN_CLUSTER_NAME" has been generated and set as the current context.
    
  2. 您現在可以透過連線閘道執行唯讀 kubectl 指令,例如:

    kubectl get pods -A
    

    如需管理員叢集的完整管理員權限,請參閱「設定連線閘道」。