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

Google Cloud 控制台可讓您透過引導式工作流程,建立僅適用於 VMware 的 Distributed Cloud 軟體管理員叢集。在工作流程中,您會在管理員工作站上執行 gkectl register bootstrap,建立臨時啟動叢集,以便佈建管理員叢集。或者,您也可以使用 gkectl 或 Terraform 建立管理員叢集。

事前準備

  • 請確認您已按照「建立管理員工作站」一文中的說明,設定並登入管理員工作站。

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

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

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

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

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

  • 如果貴組織要求傳出流量通過 Proxy 伺服器,請務必將必要的 API 和 Artifact Registry 位址加入許可清單。

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

程序總覽

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

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

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

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

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

開始設定叢集

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

    前往「Create a cluster on VMware」(建立 VMware 叢集)

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

    在後續章節建立 bootstrap 叢集時,所選 專案 ID 會顯示在 gkectl register bootstrap 指令的 --project-id 旗標中。

  3. 確認已選取「Create an admin cluster」(建立管理員叢集)。

  4. 按一下「Next: Install bootstrap environment」(下一步:安裝啟動環境)。

安裝啟動環境

請在這個部分輸入 gkectl register bootstrap 指令所需的資訊。在使用者介面欄位中輸入值時,控制台會將這些值複製到 gkectl register bootstrap 指令的對應旗標,該指令會顯示在頁面底部的「Bootstrap environment from admin workstation」(從管理員工作站啟動環境) 部分。

啟動環境基本資訊

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

  2. 在「Google Cloud API Location」(Google Cloud API 位置) 欄位中,從清單中選取 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. 在「Admin cluster version」(管理員叢集版本) 欄位中,輸入要用於建立叢集的版本。您在此選取的版本必須與 gkectl register bootstrap 指令中 --bundle-path 旗標指定的套件版本相符。

vCenter 設定

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

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

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

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

    • 「Address」(位址) 欄位對應至 gkectl register bootstrap 指令中的 --vcenter-address 旗標。

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

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

    • 「Datacenter」(資料中心) 欄位對應至 gkectl register bootstrap 指令中的 --vcenter-datacenter 旗標。

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

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

    • 「Cluster Name」(叢集名稱) 欄位對應至 gkectl register bootstrap 指令中的 --vcenter-cluster 旗標。

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

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

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

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

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

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

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

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

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

      • 「Storage policy name」(儲存空間政策名稱) 欄位對應至 gkectl register bootstrap 指令中的 --vcenter-storage-policy 旗標。

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

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

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

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

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

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

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

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

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

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

取得 CA 憑證

建立 bootstrap 叢集後,您必須在「Cluster basics」(叢集基本資訊) 頁面的「CA certificate data」(CA 憑證資料) 欄位中,提供 PEM 格式的 vCenter CA 憑證。執行下列指令,顯示憑證:

cat CA_CERT_PATH

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

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

從管理員工作站啟動環境

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

  1. 捲動至「Bootstrap environment from admin workstation」(從管理員工作站啟動環境) 部分,即可顯示 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_NAME:gkectl register bootstrap 指令建立的 kubeconfig 檔案名稱。如未指定這個旗標,指令會在目前使用的目錄中,建立名為 kubeconfig 的檔案。如果已有 kubeconfig 檔案,指令會覆寫該檔案。

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

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

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

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

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

這個指令會執行多項驗證。gkectl 成功建立 bootstrap 叢集後,您會看到類似下方的輸出內容 (為方便閱讀,已截斷):

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」(安裝 bootstrap 環境) 頁面上,按一下「Check Connection」(檢查連線)。

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

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

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

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

    如需變更 bootstrap 叢集名稱、專案 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. 按一下「Next: Cluster basics」(下一步:叢集基本資訊),開始設定管理員叢集。

叢集基本資訊

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

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

  3. 按一下「Next Control Plane」(下一個控制層)。

控制層

  1. 查看「Control plane」(控制層) 區段中的預設設定,並視需要變更。

  2. 在「Control plane node IPs」(控制層節點 IP) 區段,在下列欄位中輸入 IP 位址:

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

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

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

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

網路

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

  1. 在「Service and Pod CIDRs」(Service 和 Pod CIDR) 區段中,接受 Kubernetes Service 和 Pod IP 位址範圍的預設值,或輸入不同的 CIDR 位址範圍。

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

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

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

  3. 按一下「Next: Load balancer」(下一步:負載平衡器)。

負載平衡器

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

  1. 在「Load balancer type」(負載平衡器類型) 清單中,選取負載平衡器:

    • 隨附於 MetalLB:MetalLB 負載平衡器隨附於 Anthos clusters on bare metal,設定作業比手動負載平衡更少。MetalLB 元件會在叢集節點上執行,因此您不必為負載平衡器建立個別 VM。

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

  2. 在「Control plane VIP」(控制層 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. 您現在可以透過 Connect 閘道執行唯讀 kubectl 指令,例如:

    kubectl get pods -A
    

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