在 Compute Engine VM 中建立 Google Distributed Cloud 管理員和使用者叢集,做為示範用途

在 Compute Engine 虛擬機器 (VM) 上建立示範叢集,瞭解適用於 Bare Metal 的 Google Distributed Cloud (僅限軟體,先前稱為 Google Distributed Cloud Virtual,再之前稱為 Bare Metal 中的 Anthos 叢集)。按照本指南建立管理員和使用者叢集,可能需要 40 分鐘到 1 小時。本指南中建立的示範叢集可協助您評估 Google Distributed Cloud 叢集的佈建和運作程序,但不適用於實際工作環境。

這份文件將引導您執行指令碼,完成下列程序:

  • 佈建五個 Compute Engine VM,用於安裝示範叢集
  • 設定虛擬私有雲網路,提供叢集連線

指令碼佈建必要資源後,您可以使用下列任一用戶端,建立管理員叢集和可代管工作負載的隨附使用者叢集:bmctl、 Google Cloud 控制台、Google Cloud CLI 或 Terraform。

程序總覽

本指南包含下列主要步驟:

  1. 準備本機環境,確保指令碼具備必要的環境變數,並收集執行指令所需的基本資訊。

  2. 使用下載的指令碼建立 VM 和網路

  3. 使用其中一個支援的用戶端建立管理員叢集

  4. 使用其中一個支援的用戶端建立使用者叢集

  5. 清除:移除您使用本指南建立的叢集和 VM。

1. 準備本機環境

本指南會使用指令碼為您設定網路,因此您不需要收集大量資訊或進行任何規劃。下列步驟會設定本機環境,並收集本指南後續章節所需的基本資訊:

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. 請記下專案 ID,因為您需要這個 ID 來設定環境變數,以供本頁面的指令碼和指令使用。如果您選取現有專案,請確認您是專案擁有者或編輯者。
  7. 您可以在 Cloud Shell 或執行 Linux 或 macOS 的本機電腦上執行指令碼。如果您未使用 Cloud Shell:
    1. 請確認您已安裝最新版 Google Cloud CLI,這是與 Google Cloud互動的指令列工具。視需要更新 gcloud CLI 元件:
      gcloud components update

      視 gcloud CLI 的安裝方式而定,您可能會看到下列訊息:

      You cannot perform this action because the Google Cloud CLI component manager is disabled for this installation. You can run the following command to achieve the same result for this installation:

      按照操作說明複製並貼上指令,更新元件。

    2. 請確認已安裝 kubectl。如要安裝 kubectl,請執行下列指令:
      gcloud components install kubectl
  8. 確認專案有「default」的虛擬私有雲網路。

    如果沒有「預設」虛擬私有雲網路,下列章節中的指令碼就無法佈建必要資源。除非選擇刪除或限制,否則每個新專案起初都會具備名為「default」的自動模式虛擬私有雲網路,應可搭配指令碼運作。詳情請參閱「虛擬私有雲網路」。

  9. 請確保未強制執行下列機構政策限制:
    • constraints/iam.disableServiceAccountKeyCreation
    • constraints/compute.vmCanIpForward
    • constraints/compute.requireShieldedVm
    • constraints/compute.vmExternalIpAccess

    如果強制執行這些限制,下列章節中的指令碼就無法佈建必要資源。如果是新專案,這些限制預設會設為「Inactive」(未強制執行)。詳情請參閱組織政策限制

  10. 設定環境變數:
    export PROJECT_ID=PROJECT_ID
    export ADMIN_CLUSTER_NAME=ADMIN_CLUSTER_NAME
    export ON_PREM_API_REGION=ON_PREM_API_REGION
    export ZONE=ZONE
    • ADMIN_CLUSTER_NAME:您為管理員叢集選擇的名稱。
    • ON_PREM_API_REGION:GKE On-Prem API 執行及儲存中繼資料的 Google Cloud 區域。指定 us-central1 或其他支援的區域
    • ZONE:建立 Compute Engine VM 的 Google Cloud 區域。您可以使用 us-central1-a 或任何其他 Compute Engine 區域
  11. 執行下列指令,設定預設專案和區域。
    gcloud config set project $PROJECT_ID
    gcloud config set compute/zone $ZONE

    如果收到 PERMISSION_DENIED 錯誤,請仔細檢查您輸入的專案 ID。如果專案 ID 正確,請執行 gcloud auth login,使用有權存取專案的帳戶登入 gcloud CLI。

  12. 取得可安裝的支援版本清單:
    gcloud container bare-metal admin-clusters query-version-config \
        --location=ON_PREM_API_REGION
  13. 從上一個指令的輸出內容中選取版本,並在環境變數中設定該版本:
    export BMCTL_VERSION=BMCTL_VERSION

    建議選取相容的最高版本,以取得最新的 Google Distributed Cloud 功能和修正項目。

  14. 2. 建立 VM 和網路

    在本節中,您將下載並執行 install_admin_cluster.sh 指令碼。

    1. 複製 anthos-samples 存放區,並變更為指令碼所在的目錄:

      git clone https://github.com/GoogleCloudPlatform/anthos-samples
      cd anthos-samples/anthos-bm-gcp-bash
      
    2. 執行指令碼:

      bash install_admin_cluster.sh
      
    3. 在提示中輸入 2,即可只設定 Compute Engine 基礎架構,並在系統提示時確認選取項目。

      這個指令碼會建立 Compute Engine VM、VXLAN 網路,並設定管理員工作站和叢集節點。設定這項基礎架構大約需要 5 分鐘。

      如要進一步瞭解指令碼,請按一下下列連結:

      關於指令碼

      您可以在 anthos-samples GitHub 存放區的 anthos-bm-gcp-bash 資料夾中查看指令碼。這個指令碼會自動執行下列手動步驟:

      1. 啟用下列 Google Cloud API:
        anthos.googleapis.com
        anthosaudit.googleapis.com
        anthosgke.googleapis.com
        cloudresourcemanager.googleapis.com
        connectgateway.googleapis.com
        container.googleapis.com
        compute.googleapis.com
        gkeconnect.googleapis.com
        gkehub.googleapis.com
        gkeonprem.googleapis.com
        serviceusage.googleapis.com
        stackdriver.googleapis.com
        monitoring.googleapis.com
        logging.googleapis.com
        kubernetesmetadata.googleapis.com
        iam.googleapis.com
        opsconfigmonitoring.googleapis.com
      2. 這個指令碼會建立名為 baremetal-gcr 的單一服務帳戶,並授予下列 IAM 角色,不必為不同 API 和服務建立多個服務帳戶:
        • roles/gkehub.admin
        • roles/gkehub.connect
        • roles/logging.logWriter
        • roles/monitoring.dashboardEditor
        • roles/monitoring.metricWriter
        • roles/monitoring.viewer
        • roles/opsconfigmonitoring.resourceMetadata.writer
        • roles/serviceusage.serviceUsageViewer
        • roles/stackdriver.resourceMetadata.writer
      3. 建立下列 VM:
        • 管理員工作站專用的 VM。
        • 一個 VM,用於管理員叢集的控制層節點。
        • 兩個 VM,用於使用者叢集的工作站節點。
        • 一個用於使用者叢集控制層節點的 VM。
      4. 確認所有 VM 都已啟用 SSH,且管理工作站可透過 SSH 存取為叢集節點建立的所有其他 VM。
      5. 建立虛擬可延伸區域網路 (VXLAN) 疊加網路,在 VM 之間建立第 2 層連線。VXLAN 不會持續存在,因此如果重新啟動 VM 執行個體,網路就會遭到破壞。網路已設為 10.200.0.0/24 子網路。第 2 層連線是隨附負載平衡器的必要條件。
      6. 在管理員工作站上安裝下列工具:
        • bmctl
        • kubectl
        • Docker

        指令碼也會將 baremetal-gcr 服務帳戶的服務帳戶金鑰下載至管理工作站。

      7. 確保管理員工作站的 root@10.200.0.x 正常運作,方法如下:
        1. 在管理員工作站上產生新的 SSH 金鑰。
        2. 將公開金鑰新增至部署中的所有其他 VM。

      指令碼會輸出執行的每個指令和狀態。完成後,指令碼會輸出下列內容:

      ✅ Successfully set up SSH access from admin workstation to cluster node VMs.
      
      ✅ GCE Infrastructure setup complete. Please check the logs for any errors!!!
      
      ✅ If you do not see any errors in the output log, then you now have the following setup:
      
      |---------------------------------------------------------------------------------------------------------|
      | VM Name               | L2 Network IP (VxLAN) | INFO                                                    |
      |---------------------------------------------------------------------------------------------------------|
      | abm-admin-cluster-cp  | 10.200.0.3            | 🌟 Ready for use as control plane for the admin cluster |
      | abm-user-cluster-cp   | 10.200.0.4            | 🌟 Ready for use as control plane for the user cluster  |
      | abm-user-cluster-w1   | 10.200.0.5            | 🌟 Ready for use as worker for the user cluster         |
      | abm-user-cluster-w2   | 10.200.0.6            | 🌟 Ready for use as worker for the user cluster         |
      |---------------------------------------------------------------------------------------------------------|
      

    3. 建立管理員叢集

    bmctl

    如要使用 bmctl 建立管理員叢集,請在終端機視窗中存取管理員工作站 VM,然後從該處執行指令:

    1. 使用 SSH 以根使用者身分存取管理員工作站 VM abm-ws

      gcloud compute ssh root@abm-ws --zone ZONE
      
    2. 將使用者憑證設為應用程式預設憑證 (ADC):

      gcloud auth application-default login
      

      按照提示選取 ADC 適用的 Google 帳戶。

    3. 產生叢集設定檔:

      bmctl create config -c ADMIN_CLUSTER_NAME --project-id=PROJECT_ID
      
    4. 驗證管理員叢集設定檔:

      下列叢集設定檔已填入您先前提供的值。除了您輸入的值之外,請注意與產生的設定檔有以下差異:

      • 為提升可讀性,這個範例已移除註解。
      • 這個指令碼會建立具備所有必要權限的單一服務帳戶,並下載設定檔中參照的 bm-gcr.json 金鑰。
      gcrKeyPath: /root/bm-gcr.json
      sshPrivateKeyPath: /root/.ssh/id_rsa
      gkeConnectAgentServiceAccountKeyPath: /root/bm-gcr.json
      gkeConnectRegisterServiceAccountKeyPath: /root/bm-gcr.json
      cloudOperationsServiceAccountKeyPath: /root/bm-gcr.json
      ---
      apiVersion: v1
      kind: Namespace
      metadata:
        name: cluster-ADMIN_CLUSTER_NAME
      ---
      apiVersion: baremetal.cluster.gke.io/v1
      kind: Cluster
      metadata:
        name: ADMIN_CLUSTER_NAME
        namespace: cluster-ADMIN_CLUSTER_NAME
      spec:
        type: admin
        profile: default
        anthosBareMetalVersion: BMCTL_VERSION
        gkeConnect:
          projectID: PROJECT_ID
        controlPlane:
          nodePoolSpec:
            nodes:
            - address: 10.200.0.3
        clusterNetwork:
          pods:
            cidrBlocks:
            - 192.168.0.0/16
          services:
            cidrBlocks:
            - 10.96.0.0/20
        loadBalancer:
          mode: bundled
          ports:
            controlPlaneLBPort: 443
          vips:
            controlPlaneVIP: 10.200.0.48
        clusterOperations:
          projectID: PROJECT_ID
          location: ON_PREM_API_REGION
        storage:
          lvpNodeMounts:
            path: /mnt/localpv-disk
            storageClassName: local-disks
          lvpShare:
            path: /mnt/localpv-share
            storageClassName: local-shared
            numPVUnderSharedPath: 5
        nodeConfig:
          podDensity:
            maxPodsPerNode: 110
      
    5. 將管理工作站上產生的設定檔內容,替換為上述範例的內容。

      開啟產生的檔案 bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME.yaml,然後將內容替換為您在上一個步驟中驗證的範例內容。

    6. 建立管理員叢集:

      bmctl create cluster -c ADMIN_CLUSTER_NAME

      bmctl 指令會在執行前置檢查及建立叢集時,將輸出內容顯示在畫面上。詳細資訊會寫入管理員工作站 baremetal/bmctl-workspace/abm-user-cluster-metallb/log 資料夾中的記錄。

      叢集會在幾分鐘內建立完畢。

    7. 前往控制台的「GKE clusters」(GKE 叢集) 頁面。

      前往 GKE 叢集

      確認已選取您建立使用者叢集的專案。 畫面應會顯示管理員叢集。

    8. 登入管理員叢集:

      1. 按一下叢集名稱的連結,然後在側邊面板中按一下「登入」

      2. 選取「使用 Google 帳戶登入」

      3. 按一下 [Login] (登入)。

    驗證管理員叢集

    您可以在根帳戶的 bmctl-workspace 目錄中,找到管理員工作站的管理員叢集 kubeconfig 檔案。如要驗證部署作業,請完成下列步驟:

    1. 使用 SSH 以 root 身分存取管理工作站:

      gcloud compute ssh root@abm-ws --zone ZONE
      
    2. 確認管理員叢集已建立並正在執行:

      kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig get nodes
      

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

      none{:.devsite-disable-click-to-copy} NAME STATUS ROLES AGE VERSION abm-admin-cluster-cp Ready control-plane 94m 1.31.300-gke.81

    3. 探索完畢後,請輸入 exit 中斷與管理工作站的連線。

    主控台

    如要在控制台中建立管理員叢集,您必須從管理員工作站 VM 執行 bmctl register bootstrap,建立啟動叢集。執行 bmctl register bootstrap 指令時,請在控制台中執行步驟,建立管理員叢集。

    輸入啟動環境基本資訊

    1. 前往 Google Cloud 控制台的「GKE clusters」(GKE 叢集) 頁面。

      前往 GKE 叢集

    2. 點選「建立」

    3. 在「建立叢集」對話方塊中選取「On-premises」(內部部署),然後按一下裸機的「Configure」(設定)

    4. 請務必從專案清單中選取 PROJECT_ID

    5. 在左側導覽列中,按一下「安裝啟動程序環境」

    6. 輸入 ADMIN_CLUSTER_NAME 做為管理員叢集名稱。

    7. 選取 BMCTL_VERSION 做為管理員叢集的版本。指令碼已將這個版本的 bmctl 指令列工具下載到管理員工作站。安裝的 Google Distributed Cloud 版本必須與 bmctl 版本相符。

    8. 在「Google Cloud API Location」(Google Cloud API 位置) 欄位中,從清單中選取 ON_PREM_API_REGION。這項設定會指定 GKE On-Prem API 的執行區域,以及下列項目的儲存區域:

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

      叢集名稱、專案和位置資訊會共同識別 Google Cloud中的叢集。

    請改用下一節的步驟建立啟動叢集,而非控制台中顯示的步驟。請讓控制台頁面保持顯示狀態,因為您將繼續在該處建立管理員叢集。

    建立啟動程序叢集

    使用 GKE On-Prem API 用戶端 (例如控制台) 建立管理員叢集時,您需要在管理員工作站上建立啟動叢集。啟動叢集會託管建立管理員叢集所需的 Kubernetes 控制器。

    1. 在指令列中,使用 SSH 以根身分存取管理工作站 VM:

      gcloud compute ssh root@abm-ws --zone ZONE
      

      您可以忽略任何有關更新 VM 的訊息,並完成本教學課程。如果您打算將 VM 做為測試環境,建議按照 Ubuntu 說明文件所述,更新 OS 或升級至下一個版本。

    2. 將使用者憑證設為應用程式預設憑證 (ADC):

      gcloud auth application-default login
      

      按照提示選取 ADC 適用的 Google 帳戶。

    3. 變更為 baremetal/ 目錄,然後執行下列指令,建立啟動程序叢集。

      啟動叢集名稱是透過在管理叢集名稱前面加上 bootstrap- 而衍生。

      bmctl register bootstrap \
        --ssh-key=/root/.ssh/id_rsa \
        --name=bootstrap-ADMIN_CLUSTER_NAME \
        --project-id=PROJECT_ID
      

      bmctl 成功建立啟動叢集後,您會看到類似下列內容的輸出:

      [2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK
      [2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster
      [2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..
      

    建立管理員叢集

    1. 在「從管理員工作站啟動環境」部分的「安裝啟動環境」頁面中,按一下「檢查連線」

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

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

      • 請確認 --name 的值與「啟動環境基本資訊」部分顯示的「衍生啟動名稱」相符。

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

      如要變更啟動程序叢集名稱或專案 ID,請輸入 Ctrl-C 退出 bmctl register bootstrap,然後重新執行指令。

    網路

    1. 按一下左側導覽列中的「網路」

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

      10.200.0.3
      

      這是指令碼建立的 VXLAN 中 abm-admin-cluster-cp VM 的 IP 位址。

    3. 在「Load balancer」(負載平衡器) 專區中,確認已選取「Bundled」(已綁定)

    4. 在「Virtual IPs (VIPs)」(虛擬 IP) 部分,於「Control plane VIP」(控制層 VIP) 欄位中輸入下列內容:

      10.200.0.48
      

      後續步驟取決於啟動叢集是否可用。 終端機視窗中的 bmctl register bootstrap 指令必須執行幾分鐘,啟動程序叢集才會顯示為已註冊的成員。如果幾分鐘後仍無法使用,請檢查您使用的啟動程序叢集名稱和專案 ID。如要變更啟動叢集名稱或專案 ID,請在其他終端機視窗中輸入 Ctrl-C,退出 bmctl register bootstrap 並重新執行指令。

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

      主控台會顯示狀態訊息,驗證設定並建立叢集。

      建立管理員叢集後,管理員工作站上的啟動叢集就會刪除。另一個終端機視窗中的 bmctl register bootstrap 指令輸出內容如下所示:

      ...
      [2024-04-15 23:10:48+0000] Waiting for cluster to become ready OK
      [2024-04-15 23:16:38+0000] Please run
      [2024-04-15 23:16:38+0000] kubectl --kubeconfig bmctl-workspace/gce-admin-gcloud-001/gce-admin-gcloud-001-kubeconfig get nodes
      [2024-04-15 23:16:38+0000] to get cluster nodes status.
      [2024-04-15 23:16:38+0000] Waiting for node pools to become ready OK
      [2024-04-15 23:16:58+0000] Waiting for metrics to become ready in GCP OK
      [2024-04-15 23:21:58+0000] Waiting for cluster API provider to install in the created admin cluster OK
      [2024-04-15 23:22:08+0000] Moving admin cluster resources to the created admin cluster
      [2024-04-15 23:22:10+0000] Waiting for node update jobs to finish OK
      [2024-04-15 23:24:30+0000] Flushing logs... OK
      [2024-04-15 23:24:30+0000] Unregistering bootstrap cluster.
      [2024-04-15 23:24:30+0000] Deleting membership... OK
      [2024-04-15 23:24:32+0000] Deleting bootstrap cluster.
      

    驗證管理員叢集

    您可以在根帳戶的 bmctl-workspace 目錄中,找到管理員工作站的管理員叢集 kubeconfig 檔案。如要驗證部署作業,請完成下列步驟:

    1. 使用 SSH 以 root 身分存取管理工作站:

      gcloud compute ssh root@abm-ws --zone ZONE
      
    2. 確認管理員叢集已建立並正在執行:

      kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig get nodes
      

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

      none{:.devsite-disable-click-to-copy} NAME STATUS ROLES AGE VERSION abm-admin-cluster-cp Ready control-plane 94m 1.31.300-gke.81

    3. 探索完畢後,請輸入 exit 中斷與管理工作站的連線。

    gcloud CLI

    下列操作說明需要兩個終端機視窗。在一個終端機視窗中,執行 bmctl register bootstrap 建立啟動程序叢集。執行 bmctl register bootstrap 指令時,請在另一個終端機視窗中執行 gcloud container bare-metal admin-clusters create,建立管理員叢集。

    建立啟動程序叢集

    使用 GKE On-Prem API 用戶端 (例如 gcloud CLI) 建立管理員叢集時,您需要在管理員工作站上建立啟動叢集。啟動叢集會託管建立管理員叢集所需的 Kubernetes 控制器。

    1. 在指令列中,使用 SSH 以根身分存取管理工作站 VM:

      gcloud compute ssh root@abm-ws --zone ZONE
      

      您可以忽略任何有關更新 VM 的訊息,並完成本教學課程。如果您打算將 VM 做為測試環境,建議按照 Ubuntu 說明文件所述,更新 OS 或升級至下一個版本。

    2. 將使用者憑證設為應用程式預設憑證 (ADC):

      gcloud auth application-default login
      

      按照提示選取 ADC 適用的 Google 帳戶。

    3. 變更為 baremetal/ 目錄,然後執行下列指令,建立啟動程序叢集。

      啟動叢集名稱是透過在管理叢集名稱前面加上 bootstrap- 而衍生。

      bmctl register bootstrap \
        --ssh-key=/root/.ssh/id_rsa \
        --name=bootstrap-ADMIN_CLUSTER_NAME \
        --project-id=PROJECT_ID
      

      bmctl 成功建立啟動叢集後,您會看到類似下列內容的輸出:

      [2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK
      [2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster
      [2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..
      

    建立管理員叢集

    1. 在新終端機視窗中,確認啟動叢集已註冊為機群成員:

      gcloud container fleet memberships list \
          --project=PROJECT_ID
      

      下列步驟中的 gcloud container bare-metal admin-clusters create 指令取決於啟動叢集是否可用。另一個終端機視窗中的 bmctl register bootstrap 指令必須執行幾分鐘,啟動程序叢集才會顯示為已註冊的成員。如果幾分鐘後仍未列出,請檢查您使用的啟動程序叢集名稱和專案 ID。如要變更啟動叢集名稱或專案 ID,請在其他終端機視窗中輸入 Ctrl-C,退出 bmctl register bootstrap 並重新執行指令。

    2. 使用隨附的負載平衡器建立管理員叢集:

      請確認您指定的值與先前為指令碼指定的環境變數相符。

      gcloud container bare-metal admin-clusters create ADMIN_CLUSTER_NAME \
          --project=PROJECT_ID \
          --location=ON_PREM_API_REGION \
          --version=BMCTL_VERSION \
          --max-pods-per-node=110 \
          --control-plane-vip=10.200.0.48 \
          --control-plane-load-balancer-port=443 \
          --control-plane-node-configs node-ip=10.200.0.3 \
          --island-mode-service-address-cidr-blocks=10.96.0.0/20 \
          --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \
          --lvp-share-path=/mnt/localpv-share \
          --lvp-share-storage-class=local-shared \
          --lvp-node-mounts-config-path=/mnt/localpv-disk \
          --lvp-node-mounts-config-storage-class=local-disks
      

      在這個指令中:

      • --control-plane-vip:設為 10.200.0.48。這是叢集 Kubernetes API 伺服器負載平衡器使用的虛擬 IP (VIP)。

      • --control-plane-node-configsnode-ip設為 10.200.0.3。 這是指令碼建立的 VXLAN 中 abm-admin-cluster-cp VM 的 IP 位址。

      如需旗標的完整清單和說明,請參閱 gcloud CLI 參考資料

      指令輸出內容如下所示:

      Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.

      在範例輸出內容中,字串 operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 是長時間執行的作業的 OPERATION_ID。您可以在另一個終端機視窗中執行下列指令,瞭解作業狀態:

      gcloud container bare-metal operations describe OPERATION_ID \
          --project=PROJECT_ID \
          --location=ON_PREM_API_REGION
      

      gcloud container bare-metal admin-clusters create 成功完成後,輸出內容會與下列內容相似:

      none{:.devsite-disable-click-to-copy} Created Anthos on bare metal Admin Cluster [https://gkeonprem.googleapis.com/v1/projects/anonuser-anonproject/locations/us-central1/bareMetalAdminClusters/gce-admin-gcloud-001]. NAME LOCATION VERSION MEMBERSHIP STATE abm-cluster-1 us-central1 1.31.300-gke.81 abm-cluster-1 RUNNING

      建立管理員叢集後,管理員工作站上的啟動叢集就會刪除。另一個終端機視窗中的 bmctl register bootstrap 指令輸出內容如下所示:

      ...
      [2024-04-15 23:10:48+0000] Waiting for cluster to become ready OK
      [2024-04-15 23:16:38+0000] Please run
      [2024-04-15 23:16:38+0000] kubectl --kubeconfig bmctl-workspace/gce-admin-gcloud-001/gce-admin-gcloud-001-kubeconfig get nodes
      [2024-04-15 23:16:38+0000] to get cluster nodes status.
      [2024-04-15 23:16:38+0000] Waiting for node pools to become ready OK
      [2024-04-15 23:16:58+0000] Waiting for metrics to become ready in GCP OK
      [2024-04-15 23:21:58+0000] Waiting for cluster API provider to install in the created admin cluster OK
      [2024-04-15 23:22:08+0000] Moving admin cluster resources to the created admin cluster
      [2024-04-15 23:22:10+0000] Waiting for node update jobs to finish OK
      [2024-04-15 23:24:30+0000] Flushing logs... OK
      [2024-04-15 23:24:30+0000] Unregistering bootstrap cluster.
      [2024-04-15 23:24:30+0000] Deleting membership... OK
      [2024-04-15 23:24:32+0000] Deleting bootstrap cluster.
      

    驗證管理員叢集

    您可以在根帳戶的 bmctl-workspace 目錄中,找到管理員工作站的管理員叢集 kubeconfig 檔案。如要驗證部署作業,請完成下列步驟:

    1. 使用 SSH 以 root 身分存取管理工作站:

      gcloud compute ssh root@abm-ws --zone ZONE
      
    2. 確認管理員叢集已建立並正在執行:

      kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig get nodes
      

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

      none{:.devsite-disable-click-to-copy} NAME STATUS ROLES AGE VERSION abm-admin-cluster-cp Ready control-plane 94m 1.31.300-gke.81

    3. 探索完畢後,請輸入 exit 中斷與管理工作站的連線。

    Terraform

    下列操作說明需要兩個終端機視窗。在一個終端機視窗中,執行 bmctl register bootstrap 建立啟動程序叢集。在 bmctl register bootstrap 指令執行期間,您可以在另一個終端機視窗中執行 Terraform 指令,建立管理員叢集。

    修改使用者叢集範例檔案,使其適用於管理員叢集

    anthos-samples 存放區不包含專門用於建立 Google Distributed Cloud 管理員叢集的範例。下列步驟說明如何修改現有的使用者叢集 Terraform 範例,建立管理員叢集。

    1. 在複製 anthos-samples 的目錄中,執行下列指令,將 MetalLB 使用者叢集範例的範例檔案複製到管理員叢集的新資料夾:

      cp -r anthos-samples/anthos-onprem-terraform/abm_user_cluster_metallb \
          anthos-samples/anthos-onprem-terraform/abm_admin_cluster_basic
      
    2. 切換至 abm_admin_cluster_basic 目錄:

      cd anthos-samples/anthos-onprem-terraform/abm_admin_cluster_basic
      
    3. 編輯 Terraform 檔案:

      • variables.tf

        • 定義控制層節點 IP 位址的變數 (不過在本示範中,我們只會使用一個)。這個變數應與 variable "control_plane_ips" { ... } 項目類似。

        • 定義控制層 VIP 位址的變數。這個變數應與 variable "control_plane_vip" { ... } 項目類似。

      • terraform.tfvars

        • 為下列管理員叢集設定指派變數值:

          • 控制層節點 IP 位址:10.200.0.3

          • 控制層 VIP 位址:10.200.0.48

      • main.tf

        • google_gkeonprem_bare_metal_cluster 資源替換為 google_gkeonprem_bare_metal_admin_cluster 資源。

        • 刪除 google_gkeonprem_bare_metal_node_pool 資源和相關的 lifecycle 區段。

        • 更新資源,使用新定義的變數。

      以下是編輯 main.tf 檔案以建立管理員叢集時,檔案可能呈現的樣貌:

      /**
      * Copyright 2023 Google LLC
      *
      * Licensed under the Apache License, Version 2.0 (the "License");
      * you may not use this file except in compliance with the License.
      * You may obtain a copy of the License at
      *
      *      http://www.apache.org/licenses/LICENSE-2.0
      *
      * Unless required by applicable law or agreed to in writing, software
      * distributed under the License is distributed on an "AS IS" BASIS,
      * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      * See the License for the specific language governing permissions and
      * limitations under the License.
      */
      
      #[START anthos_onprem_terraform_bare_metal_admin_cluster_basic_main]
      
      module "enable_google_apis_primary" {
        source     = "terraform-google-modules/project-factory/google//modules/project_services"
        version    = "~> 14.0"
        project_id = var.project_id
        activate_apis = [
          "anthos.googleapis.com",
          "anthosaudit.googleapis.com",
          "anthosgke.googleapis.com",
          "cloudresourcemanager.googleapis.com",
          "compute.googleapis.com",
          "connectgateway.googleapis.com",
          "container.googleapis.com",
          "file.googleapis.com",
          "gkehub.googleapis.com",
          "iam.googleapis.com",
          "kubernetesmetadata.googleapis.com",
          "logging.googleapis.com",
          "monitoring.googleapis.com",
          "opsconfigmonitoring.googleapis.com",
          "serviceusage.googleapis.com",
          "stackdriver.googleapis.com"
        ]
        disable_services_on_destroy = false
      }
      
      # Enable GKE OnPrem API
      resource "google_project_service" "default" {
        project            = var.project_id
        service            = "gkeonprem.googleapis.com"
        disable_on_destroy = false
      }
      
      # Create a baremetal admin cluster and enroll it with the gkeonprem API
      resource "google_gkeonprem_bare_metal_admin_cluster" "admin-cluster-basic" {
        name                     = var.admin_cluster_name
        description              = "Bare metal admin cluster"
        provider                 = google
        depends_on               = [google_project_service.default]
        location                 = var.region
        bare_metal_version       = var.bare_metal_version
        network_config {
          island_mode_cidr {
            service_address_cidr_blocks = ["0.96.0.0/20"]
            pod_address_cidr_blocks     = ["192.168.0.0/16"]
          }
        }
        node_config {
          max_pods_per_node = 250
        }
        control_plane {
          control_plane_node_pool_config {
            node_pool_config {
              operating_system = "LINUX"
              dynamic "node_configs" {
                for_each = var.admin_cp_ips
                content {
                  node_ip = node_configs.value
                }
              }
            }
          }
        }
        load_balancer {
          port_config {
            control_plane_load_balancer_port = 443
          }
          vip_config {
            control_plane_vip = var.admin_cp_vip
          }
        }
        storage {
          lvp_share_config {
            lvp_config {
              path = "/mnt/localpv-share"
              storage_class = "local-shared"
            }
            shared_path_pv_count = 5
          }
          lvp_node_mounts_config {
            path = "/mnt/localpv-disk"
            storage_class = "local-disks"
          }
        }
      
        dynamic "security_config" {
          for_each = length(var.admin_user_emails) == 0 ? [] : [1]
          content {
            authorization {
              dynamic "admin_users" {
                for_each = var.admin_user_emails
                content {
                  username = admin_users.value
                }
              }
            }
          }
        }
      
        lifecycle {
          ignore_changes = [
            annotations["onprem.cluster.gke.io/user-cluster-resource-link"],
            annotations["alpha.baremetal.cluster.gke.io/cluster-metrics-webhook"],
            annotations["baremetal.cluster.gke.io/operation"],
            annotations["baremetal.cluster.gke.io/operation-id"],
            annotations["baremetal.cluster.gke.io/start-time"],
            annotations["baremetal.cluster.gke.io/upgrade-from-version"]
          ]
        }
      }
      
      #[END anthos_onprem_terraform_bare_metal_admin_cluster_basic_main]
      

      如要進一步瞭解管理員叢集的 Terraform 資源,請參閱 Terraform 登錄中的 google_gkeonprem_bare_metal_admin_cluster

    建立啟動程序叢集

    使用 GKE On-Prem API 用戶端 (例如 Terraform) 建立管理員叢集時,您需要在管理員工作站建立啟動叢集。啟動叢集會託管建立管理員叢集所需的 Kubernetes 控制器。

    1. 在指令列中,使用 SSH 以根身分存取管理工作站 VM:

      gcloud compute ssh root@abm-ws --zone ZONE
      

      您可以忽略任何有關更新 VM 的訊息,並完成本教學課程。如果您打算將 VM 做為測試環境,建議按照 Ubuntu 說明文件所述,更新 OS 或升級至下一個版本。

    2. 將使用者憑證設為應用程式預設憑證 (ADC):

      gcloud auth application-default login
      

      按照提示選取 ADC 適用的 Google 帳戶。

    3. 變更為 baremetal/ 目錄,然後執行下列指令,建立啟動程序叢集。

      啟動叢集名稱是透過在管理叢集名稱前面加上 bootstrap- 而衍生。

      bmctl register bootstrap \
        --ssh-key=/root/.ssh/id_rsa \
        --name=bootstrap-ADMIN_CLUSTER_NAME \
        --project-id=PROJECT_ID
      

      bmctl 成功建立啟動叢集後,您會看到類似下列內容的輸出:

      [2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK
      [2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster
      [2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..
      

    建立管理員叢集

    1. 初始化並建立 Terraform 方案:

      terraform init
      

      Terraform 會安裝任何需要的程式庫,例如 Google Cloud 供應商。

    2. 檢查設定並視需要進行變更:

      terraform plan
      
    3. 套用 Terraform 方案,建立管理員叢集:

      terraform apply
      

      建立管理員叢集需要 15 分鐘以上。叢集建立完成後,您會看到類似下方的訊息:

      ...
      google_gkeonprem_bare_metal_admin_cluster.admin-cluster-basic: Still creating... [20m10s elapsed]
      google_gkeonprem_bare_metal_admin_cluster.admin-cluster-basic: Creation complete after 20m11s
      [id=projects/anonuser-anonproject/locations/us-central1/bareMetalAdminClusters/gce-admin-terra002]
      
      Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
      

      建立管理員叢集後,管理員工作站上的啟動叢集就會刪除。另一個終端機視窗中的 bmctl register bootstrap 指令輸出內容如下所示:

      ...
      [2024-04-15 23:10:48+0000] Waiting for cluster to become ready OK
      [2024-04-15 23:16:38+0000] Please run
      [2024-04-15 23:16:38+0000] kubectl --kubeconfig bmctl-workspace/gce-admin-gcloud-001/gce-admin-gcloud-001-kubeconfig get nodes
      [2024-04-15 23:16:38+0000] to get cluster nodes status.
      [2024-04-15 23:16:38+0000] Waiting for node pools to become ready OK
      [2024-04-15 23:16:58+0000] Waiting for metrics to become ready in GCP OK
      [2024-04-15 23:21:58+0000] Waiting for cluster API provider to install in the created admin cluster OK
      [2024-04-15 23:22:08+0000] Moving admin cluster resources to the created admin cluster
      [2024-04-15 23:22:10+0000] Waiting for node update jobs to finish OK
      [2024-04-15 23:24:30+0000] Flushing logs... OK
      [2024-04-15 23:24:30+0000] Unregistering bootstrap cluster.
      [2024-04-15 23:24:30+0000] Deleting membership... OK
      [2024-04-15 23:24:32+0000] Deleting bootstrap cluster.
      

    4. 前往控制台的「GKE clusters」(GKE 叢集) 頁面。

      前往 GKE 叢集

      確認已選取您建立使用者叢集的專案。 畫面應會顯示管理員叢集。

    5. 登入管理員叢集:

      1. 按一下叢集名稱的連結,然後在側邊面板中按一下「登入」

      2. 選取「使用 Google 帳戶登入」

      3. 按一下 [Login] (登入)。

    驗證管理員叢集

    您可以在根帳戶的 bmctl-workspace 目錄中,找到管理員工作站的管理員叢集 kubeconfig 檔案。如要驗證部署作業,請完成下列步驟:

    1. 使用 SSH 以 root 身分存取管理工作站:

      gcloud compute ssh root@abm-ws --zone ZONE
      
    2. 確認管理員叢集已建立並正在執行:

      kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig get nodes
      

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

      none{:.devsite-disable-click-to-copy} NAME STATUS ROLES AGE VERSION abm-admin-cluster-cp Ready control-plane 94m 1.31.300-gke.81

    3. 探索完畢後,請輸入 exit 中斷與管理工作站的連線。

    4. 建立使用者叢集

    您可以使用 Google Cloud 控制台、Google Cloud CLI 或 Terraform 建立使用者叢集。為求簡單易懂,請使用 abm-user-cluster-metallb 做為使用者叢集名稱,與 Terraform 指令碼中的硬式編碼名稱相符。

    bmctl

    1. 使用 SSH 以根使用者身分存取管理員工作站 VM abm-ws

      gcloud compute ssh root@abm-ws --zone ZONE
      
    2. 產生叢集設定檔:

      bmctl create config -c abm-user-cluster-metallb \
          --project-id=PROJECT_ID
    3. 在下列使用者叢集設定檔中,於 clusterSecurity 區段設定電子郵件地址,並驗證其餘設定:

      下列叢集設定檔已填入您先前在規劃表輸入的值。除了您輸入的值之外,請注意與產生的設定檔有下列差異:

      • 為提升可讀性,這個範例已移除註解。
      • 使用者叢集會正常移除「憑證」部分。
      • 叢集類型 spec.type 已設為 user
      • 系統已新增「spec.clusterSecurity.authorization.clusterAdmin.gcpAccounts」欄位,可將 clusterrole/cluster-admin 授予您的帳戶。這個欄位可讓您登入控制台中的叢集,查看更多叢集詳細資料。Google Cloud
      ---
      apiVersion: v1
      kind: Namespace
      metadata:
        name: cluster-abm-user-cluster-metallb
      ---
      apiVersion: baremetal.cluster.gke.io/v1
      kind: Cluster
      metadata:
        name: abm-user-cluster-metallb
        namespace: cluster-abm-user-cluster-metallb
      spec:
        type: user
        profile: default
        anthosBareMetalVersion: BMCTL_VERSION
        gkeConnect:
          projectID: PROJECT_ID
        controlPlane:
          nodePoolSpec:
            nodes:
            - address: 10.200.0.4
        clusterNetwork:
          pods:
            cidrBlocks:
            - 192.168.0.0/16
          services:
            cidrBlocks:
            - 10.96.0.0/20
        loadBalancer:
          mode: bundled
          ports:
            controlPlaneLBPort: 443
          vips:
            controlPlaneVIP: 10.200.0.50
            ingressVIP: 10.200.0.51
          addressPools:
          - name: pool1
            addresses:
            - 10.200.0.51-10.200.0.70
        clusterOperations:
          projectID: PROJECT_ID
          location: ON_PREM_API_REGION
        clusterSecurity:
          authorization:
            clusterAdmin:
              gcpAccounts:
              - YOUR_EMAIL_ADDRESS
        storage:
          lvpNodeMounts:
            path: /mnt/localpv-disk
            storageClassName: local-disks
          lvpShare:
            path: /mnt/localpv-share
            storageClassName: local-shared
            numPVUnderSharedPath: 5
        nodeConfig:
          podDensity:
            maxPodsPerNode: 250
      ---
      apiVersion: baremetal.cluster.gke.io/v1
      kind: NodePool
      metadata:
        name: node-pool-1
        namespace: cluster-abm-user-cluster-metallb
      spec:
        clusterName: abm-user-cluster-metallb
        nodes:
        - address: 10.200.0.5
      
    4. 將管理工作站上產生的設定檔內容,替換為上述範例的內容。

      開啟產生的檔案 bmctl-workspace/abm-user-cluster-metallb/abm-user-cluster-metallb.yaml,然後將內容替換為您在上一個步驟中驗證的範例內容。

    5. 建立使用者叢集:

      bmctl create cluster -c abm-user-cluster-metallb \
        --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig

      bmctl 指令會在執行前置檢查及建立叢集時,將輸出內容顯示在畫面上。詳細資訊會寫入管理員工作站 baremetal/bmctl-workspace/abm-user-cluster-metallb/log 資料夾中的記錄。

      叢集會在幾分鐘內建立完畢。

    6. 前往 Google Cloud 控制台的「GKE clusters」(GKE 叢集) 頁面。

      前往 GKE 叢集

      確認已選取您建立使用者叢集的專案。 清單中應該會顯示管理員和使用者叢集。

    7. 登入使用者叢集:

      1. 按一下叢集名稱的連結,然後在側邊面板中按一下「登入」

      2. 選取「使用 Google 帳戶登入」

      3. 按一下 [Login] (登入)。

      重複上述步驟登入管理員叢集。

    主控台

    請按照下列步驟,在控制台中建立使用者叢集:

    1. 在控制台中,前往「建立 Bare Metal 叢集」頁面。

      前往「建立裸機叢集」

    2. 確認已選取建立管理員叢集的 Google Cloud 專案。

    3. 點選「建立叢集」

    4. 在對話方塊中,按一下「On-premises」

    5. 按一下「裸機」旁的「設定」。系統隨即顯示「Prerequisites」(必要條件) 頁面。

    6. 在「選擇叢集類型」下方,選取「為現有管理員叢集建立使用者叢集」

    7. 點選「下一步」

    叢集基本資訊

    1. 輸入使用者叢集的名稱,或使用預設名稱。

    2. 確認已選取新建立的管理員叢集。 這個頁面上的其他設定可以保留預設值。

    3. 按一下左側導覽列中的「網路」

    網路

    您執行指令碼建立 VM 和管理員叢集時,也會在 10.200.0.0/24 子網路中建立具有 IP 位址的第 2 層 VXLAN。

    1. 在「控制層」部分,於「控制層節點 IP 1」欄位中輸入下列內容:

      10.200.0.4
      

      這是指令碼建立的 VXLAN 中 abm-user-cluster-cp1 VM 的 IP 位址。

    2. 在「Load balancer」(負載平衡器) 專區中,使用預設的負載平衡器「Bundled with MetalLB」(與 MetalLB 組合)

    3. 在「New address pool」(新位址集區) 區段中,於「IP address range 1」(IP 位址範圍 1) 欄位中輸入下列 IP 位址範圍:

      10.200.0.51-10.200.0.70
      
    4. 按一下 [完成]

    5. 在「虛擬 IP」部分,於「控制層 VIP」欄位中輸入下列 IP 位址:

      10.200.0.50
      
    6. 輸入下列 Ingress VIP 的 IP 位址:

      10.200.0.51
      
    7. 使用「Service and Pod CIDRs」(服務和 Pod 的 CIDR) 區段中的預設 IP 位址

    8. 按一下左側導覽列中的「default pool」

    建立節點集區

    使用者叢集必須至少有一個工作站節點的節點集區。

    1. 在「節點地址 1」欄位中輸入下列 IP 位址:

      10.200.0.5
      

      這是指令碼建立的 VXLAN 中 abm-user-cluster-w1 VM 的 IP 位址。

    建立叢集

    1. 按一下「驗證並建立」,建立使用者叢集。

      建立使用者叢集需要 15 分鐘以上的時間。主控台會顯示狀態訊息,驗證設定並建立叢集。

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

      如要查看建立程序的其他資訊,請按一下「顯示詳細資料」顯示側邊面板。按一下 即可關閉詳細資料面板。

      叢集建立完成後,系統會顯示「叢集狀態:執行中」

    2. 叢集建立完成後,按一下「Clusters」(叢集) ,返回「Clusters」(叢集) 頁面。

    3. 登入使用者叢集:

      1. 按一下叢集名稱的連結,然後在側邊面板中按一下「登入」

      2. 選取「使用 Google 帳戶登入」

      3. 按一下 [Login] (登入)。

      重複上述步驟,登入管理員叢集。

    gcloud CLI

    如要建立使用者叢集,請按照下列步驟操作:

    1. 執行下列指令來建立使用者叢集:

      gcloud container bare-metal clusters create abm-user-cluster-metallb \
          --project=PROJECT_ID \
          --admin-cluster-membership=projects/PROJECT_ID/locations/ON_PREM_API_REGION/memberships/ADMIN_CLUSTER_NAME \
          --location=ON_PREM_API_REGION \
          --version=BMCTL_VERSION \
          --admin-users=YOUR_EMAIL_ADDRESS \
          --metal-lb-address-pools='pool=lb-pool-1,manual-assign=True,addresses=10.200.0.51-10.200.0.70' \
          --control-plane-node-configs='node-ip=10.200.0.4' \
          --control-plane-vip=10.200.0.50 \
          --control-plane-load-balancer-port=443 \
          --ingress-vip=10.200.0.51 \
          --island-mode-service-address-cidr-blocks=10.96.0.0/20 \
          --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \
          --lvp-share-path=/mnt/localpv-share \
          --lvp-share-storage-class=local-shared \
          --lvp-node-mounts-config-path=/mnt/localpv-disk \
          --lvp-node-mounts-config-storage-class=local-disks
      

      執行指令後,您會看到如下所示的輸出:

      Waiting for operation [projects/PROJECT_ID/locations/ON_PREM_API_REGION/operations/operation-1678304606537-5f668bde5c57e-341effde-b612ff8a] to complete...
      

      在範例輸出內容中,字串 operation-1678304606537-5f668bde5c57e-341effde-b612ff8a 是長時間執行的作業的 OPERATION_ID

    2. 如要瞭解作業狀態,請開啟另一個終端機視窗並執行指令。

      gcloud container bare-metal operations describe OPERATION_ID \
          --project=PROJECT_ID \
          --location=ON_PREM_API_REGION
      

      OPERATION_ID 替換為上一個步驟輸出內容中的對應字串。

      建立叢集大約需要 15 分鐘以上。建立叢集時,您可以不時執行上一個指令,取得目前狀態。

      叢集建立完成後,畫面會顯示類似以下的輸出內容:

      Created Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/ON_PREM_API_REGION/bareMetalClusters/abm-user-cluster-metallb].

      如要進一步瞭解 gcloud container bare-metal clusters create 指令,包括每個標記的說明,請參閱 gcloud CLI 參考資料中叢集資源的「container bare-metal clusters create」頁面。

    建立節點集區

    叢集建立完成後,即可為叢集建立節點集區。

    如要建立節點集區,請按照下列步驟操作:

    1. 執行下列指令來建立節點集區:

      gcloud container bare-metal node-pools create NODE_POOL_NAME \
          --cluster=abm-user-cluster-metallb \
          --project=PROJECT_ID \
          --location=ON_PREM_API_REGION \
          --node-configs='node-ip=10.200.0.5'
      

      NODE_POOL_NAME 替換為節點集區的名稱。

      執行指令後,您會看到如下所示的輸出:

      Waiting for operation [projects/PROJECT_ID/locations/ON_PREM_API_REGION/operations/operation-1678308682052-5f669b0d132cb-6ebd1c2c-816287a7] to complete...
      

      建立節點集區大約需要 5 分鐘或更短的時間。節點集區建立完成後,您會看到如下所示的輸出內容:

      Created node pool in Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/ON_PREM_API_REGION/bareMetalClusters/abm-user-cluster-metallb/bareMetalNodePools/NODE_POOL_NAME].
      
    2. 前往控制台的「Kubernetes clusters」(Kubernetes 叢集) 頁面:

      前往「建立 Bare Metal 叢集」頁面

      確認已選取您建立使用者叢集的專案。 清單中應該會顯示管理員和使用者叢集。

    3. 登入使用者叢集:

      1. 按一下叢集名稱的連結,然後在側邊面板中按一下「登入」

      2. 選取「使用 Google 帳戶登入」

      3. 按一下 [Login] (登入)。

      重複上述步驟登入管理員叢集。

    Terraform

    您可以使用下列基本設定範例,建立搭載 MetalLB 負載平衡器的使用者叢集。詳情請參閱google_gkeonprem_bare_metal_cluster參考說明文件

    1. 在您複製 anthos-samples 的目錄中,變更為 Terraform 範例所在的目錄:

      cd anthos-samples/anthos-onprem-terraform/abm_user_cluster_metallb
      

      範例提供範例變數檔案,可傳遞至 main.tf

    2. 建立 terraform.tfvars.sample 檔案副本:

      cp terraform.tfvars.sample terraform.tfvars
      
    3. 驗證下列範例中的值:

      下列 Terraform 變數檔案 terraform.tfvars.sample 已預先填入 IP 位址,以及您在本指南先前章節中輸入的值。

      
      project_id          = "PROJECT_ID"
      region              = "ON_PREM_API_REGION"
      admin_cluster_name  = "ADMIN_CLUSTER_NAME"
      bare_metal_version  = "VERSION"
      admin_user_emails   = ["YOUR_EMAIL_ADDRESS", "ADMIN_2_EMAIL_ADDRESS"]
      cluster_name        = "abm-user-cluster-metallb"
      control_plane_ips   = ["10.200.0.4"]
      worker_node_ips     = ["10.200.0.5", "10.200.0.6"]
      control_plane_vip   = "10.200.0.50"
      ingress_vip         = "10.200.0.51"
      lb_address_pools    = [
          { name = "lbpool_1", addresses = ["10.200.0.51-10.200.0.70"] }
      ]
      

      ADMIN_2_EMAIL_ADDRESS 替換為與 Google Cloud 帳戶相關聯的電子郵件地址,或在編輯變數檔案時移除該地址。

      如要進一步瞭解這個範例中您要設定變數的引數,請參閱裸機使用者叢集的 Terraform 說明文件中的「引數參考資料」。

    4. 將變數檔案副本的內容,替換為上述範例的內容。

    5. 初始化並建立 Terraform 方案:

      terraform init
      

      Terraform 會安裝任何需要的程式庫,例如 Google Cloud 供應商。

    6. 檢查設定並視需要進行變更:

      terraform plan
      
    7. 套用 Terraform 方案,建立使用者叢集:

      terraform apply
      

      建立使用者叢集需要 15 分鐘以上的時間。您可以在 Google Cloud 控制台的「GKE clusters」(GKE 叢集) 頁面中查看叢集。

    8. 前往 Google Cloud 控制台的「GKE clusters」(GKE 叢集) 頁面。

      前往 GKE 叢集

      確認已選取您建立使用者叢集的專案。 清單中應該會顯示管理員和使用者叢集。

    9. 登入使用者叢集:

      1. 按一下叢集名稱的連結,然後在側邊面板中按一下「登入」

      2. 選取「使用 Google 帳戶登入」

      3. 按一下 [Login] (登入)。

      重複上述步驟登入管理員叢集。

    5. 清除所用資源

    請按照下列操作說明,移除您使用本指南建立的叢集和 VM。

    刪除使用者叢集

    bmctl

    • 如要使用 bmctl 刪除使用者叢集,請從管理工作站 VM 執行下列指令:abm-ws

      bmctl reset \
          --cluster abm-user-cluster-metallb \
          --admin-kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
      

    控制台

    1. 前往控制台的「GKE clusters」(GKE 叢集) 頁面。

      前往 GKE 叢集

    2. 在叢集清單中,按一下使用者叢集。

    3. 在「詳細資料」面板中,按一下「查看更多詳細資料」

    4. 按一下視窗頂端附近的「刪除」

    5. 系統提示您確認時,請輸入叢集名稱,然後按一下「Delete」(刪除)

    6. 按一下右上角的 ,即可查看刪除狀態。您可能需要重新整理頁面,才能更新叢集清單。

    gcloud CLI

    • 如要刪除叢集,請執行下列指令:

      gcloud container bare-metal clusters delete abm-user-cluster-metallb \
          --project=PROJECT_ID \
          --location=ON_PREM_API_REGION \
          --force
      

      --force 標記可讓您刪除含有節點集區的叢集。如果沒有 --force 標記,您必須先刪除節點集區,然後再刪除叢集。

    如要瞭解其他標記,請參閱 gcloud container bare-metal clusters delete

    Terraform

    terraform destroy 指令會終止您執行 terraform apply 建立使用者叢集時建立的資源。

    • 從 Terraform 使用者叢集範例檔案 (例如 main.tf) 所在的目錄執行下列指令:

      terraform destroy
      

    請先刪除使用者叢集,再刪除管理員叢集和 VM。

    刪除管理員叢集和 VM

    1. 從 GKE On-Prem API 取消註冊管理員叢集:

      gcloud container bare-metal admin-clusters unenroll ADMIN_CLUSTER_NAME \
          --project=PROJECT_ID \
          --location=ON_PREM_API_REGION
      
    2. 連線至管理員工作站:

      gcloud compute ssh root@abm-ws --zone ZONE
      
    3. 刪除管理員叢集:

      bmctl reset -c ADMIN_CLUSTER_NAME
      

      bmctl 會取消註冊機群中的叢集,然後刪除叢集。請先刪除叢集,再刪除 VM。

    4. 退出管理員工作站:

      exit
      
    5. 列出名稱中含有 abm 的所有 VM:

      gcloud compute instances list | grep 'abm'
      
    6. 確認您要刪除名稱中含有 abm 的所有 VM。

      驗證完成後,即可執行下列指令刪除 abm VM:

      gcloud compute instances list --format="value(name)" | \
          grep 'abm' | \
          xargs gcloud compute instances delete --quiet --zone ZONE
      
    7. 執行下列指令刪除服務帳戶,並在系統提示時輸入 y

      gcloud iam service-accounts delete baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com
      

      後續步驟