在 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。
程序總覽
本指南包含下列主要步驟:
準備本機環境,確保指令碼具備必要的環境變數,並收集執行指令所需的基本資訊。
使用下載的指令碼建立 VM 和網路。
使用其中一個支援的用戶端建立管理員叢集。
使用其中一個支援的用戶端建立使用者叢集。
清除:移除您使用本指南建立的叢集和 VM。
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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- 請記下專案 ID,因為您需要這個 ID 來設定環境變數,以供本頁面的指令碼和指令使用。如果您選取現有專案,請確認您是專案擁有者或編輯者。
-
您可以在 Cloud Shell 或執行 Linux 或 macOS 的本機電腦上執行指令碼。如果您未使用 Cloud Shell:
- 請確認您已安裝最新版 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:
按照操作說明複製並貼上指令,更新元件。
- 請確認已安裝
kubectl
。如要安裝kubectl
,請執行下列指令:gcloud components install kubectl
- 請確認您已安裝最新版 Google Cloud CLI,這是與 Google Cloud互動的指令列工具。視需要更新 gcloud CLI 元件:
- 確認專案有「default」的虛擬私有雲網路。
如果沒有「預設」虛擬私有雲網路,下列章節中的指令碼就無法佈建必要資源。除非選擇刪除或限制,否則每個新專案起初都會具備名為「default」的自動模式虛擬私有雲網路,應可搭配指令碼運作。詳情請參閱「虛擬私有雲網路」。
- 請確保未強制執行下列機構政策限制:
constraints/iam.disableServiceAccountKeyCreation
constraints/compute.vmCanIpForward
constraints/compute.requireShieldedVm
constraints/compute.vmExternalIpAccess
如果強制執行這些限制,下列章節中的指令碼就無法佈建必要資源。如果是新專案,這些限制預設會設為「Inactive」(未強制執行)。詳情請參閱組織政策限制。
- 設定環境變數:
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 區域。
- 執行下列指令,設定預設專案和區域。
gcloud config set project $PROJECT_ID gcloud config set compute/zone $ZONE
如果收到
PERMISSION_DENIED
錯誤,請仔細檢查您輸入的專案 ID。如果專案 ID 正確,請執行gcloud auth login
,使用有權存取專案的帳戶登入 gcloud CLI。 - 取得可安裝的支援版本清單:
gcloud container bare-metal admin-clusters query-version-config \ --location=ON_PREM_API_REGION
- 從上一個指令的輸出內容中選取版本,並在環境變數中設定該版本:
export BMCTL_VERSION=BMCTL_VERSION
建議選取相容的最高版本,以取得最新的 Google Distributed Cloud 功能和修正項目。
複製
anthos-samples
存放區,並變更為指令碼所在的目錄:git clone https://github.com/GoogleCloudPlatform/anthos-samples cd anthos-samples/anthos-bm-gcp-bash
執行指令碼:
bash install_admin_cluster.sh
在提示中輸入
2
,即可只設定 Compute Engine 基礎架構,並在系統提示時確認選取項目。這個指令碼會建立 Compute Engine VM、VXLAN 網路,並設定管理員工作站和叢集節點。設定這項基礎架構大約需要 5 分鐘。
如要進一步瞭解指令碼,請按一下下列連結:
關於指令碼
您可以在 anthos-samples GitHub 存放區的
anthos-bm-gcp-bash
資料夾中查看指令碼。這個指令碼會自動執行下列手動步驟:-
啟用下列 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
-
這個指令碼會建立名為
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
-
建立下列 VM:
- 管理員工作站專用的 VM。
- 一個 VM,用於管理員叢集的控制層節點。
- 兩個 VM,用於使用者叢集的工作站節點。
- 一個用於使用者叢集控制層節點的 VM。
- 確認所有 VM 都已啟用 SSH,且管理工作站可透過 SSH 存取為叢集節點建立的所有其他 VM。
-
建立虛擬可延伸區域網路 (VXLAN) 疊加網路,在 VM 之間建立第 2 層連線。VXLAN 不會持續存在,因此如果重新啟動 VM 執行個體,網路就會遭到破壞。網路已設為
10.200.0.0/24
子網路。第 2 層連線是隨附負載平衡器的必要條件。 -
在管理員工作站上安裝下列工具:
bmctl
kubectl
- Docker
指令碼也會將
baremetal-gcr
服務帳戶的服務帳戶金鑰下載至管理工作站。 -
確保管理員工作站的
root@10.200.0.x
正常運作,方法如下:- 在管理員工作站上產生新的 SSH 金鑰。
- 將公開金鑰新增至部署中的所有其他 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 | |---------------------------------------------------------------------------------------------------------|
-
啟用下列 Google Cloud API:
使用 SSH 以根使用者身分存取管理員工作站 VM
abm-ws
:gcloud compute ssh root@abm-ws --zone ZONE
將使用者憑證設為應用程式預設憑證 (ADC):
gcloud auth application-default login
按照提示選取 ADC 適用的 Google 帳戶。
產生叢集設定檔:
bmctl create config -c ADMIN_CLUSTER_NAME --project-id=PROJECT_ID
驗證管理員叢集設定檔:
下列叢集設定檔已填入您先前提供的值。除了您輸入的值之外,請注意與產生的設定檔有以下差異:
- 為提升可讀性,這個範例已移除註解。
- 這個指令碼會建立具備所有必要權限的單一服務帳戶,並下載設定檔中參照的
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
將管理工作站上產生的設定檔內容,替換為上述範例的內容。
開啟產生的檔案
bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME.yaml
,然後將內容替換為您在上一個步驟中驗證的範例內容。建立管理員叢集:
bmctl create cluster -c ADMIN_CLUSTER_NAME
bmctl
指令會在執行前置檢查及建立叢集時,將輸出內容顯示在畫面上。詳細資訊會寫入管理員工作站baremetal/bmctl-workspace/abm-user-cluster-metallb/log
資料夾中的記錄。叢集會在幾分鐘內建立完畢。
前往控制台的「GKE clusters」(GKE 叢集) 頁面。
確認已選取您建立使用者叢集的專案。 畫面應會顯示管理員叢集。
登入管理員叢集:
按一下叢集名稱的連結,然後在側邊面板中按一下「登入」。
選取「使用 Google 帳戶登入」。
按一下 [Login] (登入)。
使用 SSH 以 root 身分存取管理工作站:
gcloud compute ssh root@abm-ws --zone ZONE
確認管理員叢集已建立並正在執行:
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
探索完畢後,請輸入
exit
中斷與管理工作站的連線。前往 Google Cloud 控制台的「GKE clusters」(GKE 叢集) 頁面。
點選「建立」。
在「建立叢集」對話方塊中選取「On-premises」(內部部署),然後按一下裸機的「Configure」(設定):
請務必從專案清單中選取
PROJECT_ID
。在左側導覽列中,按一下「安裝啟動程序環境」。
輸入
ADMIN_CLUSTER_NAME
做為管理員叢集名稱。選取
BMCTL_VERSION
做為管理員叢集的版本。指令碼已將這個版本的bmctl
指令列工具下載到管理員工作站。安裝的 Google Distributed Cloud 版本必須與bmctl
版本相符。在「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中的叢集。
在指令列中,使用 SSH 以根身分存取管理工作站 VM:
gcloud compute ssh root@abm-ws --zone ZONE
您可以忽略任何有關更新 VM 的訊息,並完成本教學課程。如果您打算將 VM 做為測試環境,建議按照 Ubuntu 說明文件所述,更新 OS 或升級至下一個版本。
將使用者憑證設為應用程式預設憑證 (ADC):
gcloud auth application-default login
按照提示選取 ADC 適用的 Google 帳戶。
變更為
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..
在「從管理員工作站啟動環境」部分的「安裝啟動環境」頁面中,按一下「檢查連線」。
成功後,主控台會顯示「Connection established」(已建立連線)
。必須先建立與啟動程序叢集的連線,才能繼續。如果連線未建立,請檢查您為
bmctl register bootstrap
指令指定的引數:請確認
--name
的值與「啟動環境基本資訊」部分顯示的「衍生啟動名稱」相符。確認
--project-id
的值與您在控制台中選取的專案 ID 相符。
如要變更啟動程序叢集名稱或專案 ID,請輸入
Ctrl-C
退出bmctl register bootstrap
,然後重新執行指令。按一下左側導覽列中的「網路」。
在「控制層」部分,於「控制層節點 IP 1」欄位中輸入下列內容:
10.200.0.3
這是指令碼建立的 VXLAN 中 abm-admin-cluster-cp VM 的 IP 位址。
在「Load balancer」(負載平衡器) 專區中,確認已選取「Bundled」(已綁定)。
在「Virtual IPs (VIPs)」(虛擬 IP) 部分,於「Control plane VIP」(控制層 VIP) 欄位中輸入下列內容:
10.200.0.48
後續步驟取決於啟動叢集是否可用。 終端機視窗中的
bmctl register bootstrap
指令必須執行幾分鐘,啟動程序叢集才會顯示為已註冊的成員。如果幾分鐘後仍無法使用,請檢查您使用的啟動程序叢集名稱和專案 ID。如要變更啟動叢集名稱或專案 ID,請在其他終端機視窗中輸入Ctrl-C
,退出bmctl register bootstrap
並重新執行指令。按一下「驗證並建立」。
主控台會顯示狀態訊息,驗證設定並建立叢集。
建立管理員叢集後,管理員工作站上的啟動叢集就會刪除。另一個終端機視窗中的
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.
使用 SSH 以 root 身分存取管理工作站:
gcloud compute ssh root@abm-ws --zone ZONE
確認管理員叢集已建立並正在執行:
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
探索完畢後,請輸入
exit
中斷與管理工作站的連線。在指令列中,使用 SSH 以根身分存取管理工作站 VM:
gcloud compute ssh root@abm-ws --zone ZONE
您可以忽略任何有關更新 VM 的訊息,並完成本教學課程。如果您打算將 VM 做為測試環境,建議按照 Ubuntu 說明文件所述,更新 OS 或升級至下一個版本。
將使用者憑證設為應用程式預設憑證 (ADC):
gcloud auth application-default login
按照提示選取 ADC 適用的 Google 帳戶。
變更為
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..
在新終端機視窗中,確認啟動叢集已註冊為機群成員:
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
並重新執行指令。使用隨附的負載平衡器建立管理員叢集:
請確認您指定的值與先前為指令碼指定的環境變數相符。
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-configs
:node-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.
使用 SSH 以 root 身分存取管理工作站:
gcloud compute ssh root@abm-ws --zone ZONE
確認管理員叢集已建立並正在執行:
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
探索完畢後,請輸入
exit
中斷與管理工作站的連線。在複製
anthos-samples
的目錄中,執行下列指令,將 MetalLB 使用者叢集範例的範例檔案複製到管理員叢集的新資料夾:cp -r anthos-samples/anthos-onprem-terraform/abm_user_cluster_metallb \ anthos-samples/anthos-onprem-terraform/abm_admin_cluster_basic
切換至
abm_admin_cluster_basic
目錄:cd anthos-samples/anthos-onprem-terraform/abm_admin_cluster_basic
編輯 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。
在指令列中,使用 SSH 以根身分存取管理工作站 VM:
gcloud compute ssh root@abm-ws --zone ZONE
您可以忽略任何有關更新 VM 的訊息,並完成本教學課程。如果您打算將 VM 做為測試環境,建議按照 Ubuntu 說明文件所述,更新 OS 或升級至下一個版本。
將使用者憑證設為應用程式預設憑證 (ADC):
gcloud auth application-default login
按照提示選取 ADC 適用的 Google 帳戶。
變更為
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..
初始化並建立 Terraform 方案:
terraform init
Terraform 會安裝任何需要的程式庫,例如 Google Cloud 供應商。
檢查設定並視需要進行變更:
terraform plan
套用 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.
前往控制台的「GKE clusters」(GKE 叢集) 頁面。
確認已選取您建立使用者叢集的專案。 畫面應會顯示管理員叢集。
登入管理員叢集:
按一下叢集名稱的連結,然後在側邊面板中按一下「登入」。
選取「使用 Google 帳戶登入」。
按一下 [Login] (登入)。
使用 SSH 以 root 身分存取管理工作站:
gcloud compute ssh root@abm-ws --zone ZONE
確認管理員叢集已建立並正在執行:
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
探索完畢後,請輸入
exit
中斷與管理工作站的連線。使用 SSH 以根使用者身分存取管理員工作站 VM
abm-ws
:gcloud compute ssh root@abm-ws --zone ZONE
產生叢集設定檔:
bmctl create config -c abm-user-cluster-metallb \ --project-id=PROJECT_ID
在下列使用者叢集設定檔中,於
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
將管理工作站上產生的設定檔內容,替換為上述範例的內容。
開啟產生的檔案
bmctl-workspace/abm-user-cluster-metallb/abm-user-cluster-metallb.yaml
,然後將內容替換為您在上一個步驟中驗證的範例內容。建立使用者叢集:
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
資料夾中的記錄。叢集會在幾分鐘內建立完畢。
前往 Google Cloud 控制台的「GKE clusters」(GKE 叢集) 頁面。
確認已選取您建立使用者叢集的專案。 清單中應該會顯示管理員和使用者叢集。
登入使用者叢集:
按一下叢集名稱的連結,然後在側邊面板中按一下「登入」。
選取「使用 Google 帳戶登入」。
按一下 [Login] (登入)。
重複上述步驟登入管理員叢集。
在控制台中,前往「建立 Bare Metal 叢集」頁面。
確認已選取建立管理員叢集的 Google Cloud 專案。
點選「建立叢集」。
在對話方塊中,按一下「On-premises」。
按一下「裸機」旁的「設定」。系統隨即顯示「Prerequisites」(必要條件) 頁面。
在「選擇叢集類型」下方,選取「為現有管理員叢集建立使用者叢集」
點選「下一步」。
輸入使用者叢集的名稱,或使用預設名稱。
確認已選取新建立的管理員叢集。 這個頁面上的其他設定可以保留預設值。
按一下左側導覽列中的「網路」。
在「控制層」部分,於「控制層節點 IP 1」欄位中輸入下列內容:
10.200.0.4
這是指令碼建立的 VXLAN 中
abm-user-cluster-cp1
VM 的 IP 位址。在「Load balancer」(負載平衡器) 專區中,使用預設的負載平衡器「Bundled with MetalLB」(與 MetalLB 組合)。
在「New address pool」(新位址集區) 區段中,於「IP address range 1」(IP 位址範圍 1) 欄位中輸入下列 IP 位址範圍:
10.200.0.51-10.200.0.70
按一下 [完成]。
在「虛擬 IP」部分,於「控制層 VIP」欄位中輸入下列 IP 位址:
10.200.0.50
輸入下列 Ingress VIP 的 IP 位址:
10.200.0.51
使用「Service and Pod CIDRs」(服務和 Pod 的 CIDR) 區段中的預設 IP 位址。
按一下左側導覽列中的「default pool」。
在「節點地址 1」欄位中輸入下列 IP 位址:
10.200.0.5
這是指令碼建立的 VXLAN 中 abm-user-cluster-w1 VM 的 IP 位址。
按一下「驗證並建立」,建立使用者叢集。
建立使用者叢集需要 15 分鐘以上的時間。主控台會顯示狀態訊息,驗證設定並建立叢集。
如果設定有問題,控制台會顯示錯誤訊息,您應該能清楚瞭解問題,並修正設定問題,然後再次嘗試建立叢集。
如要查看建立程序的其他資訊,請按一下「顯示詳細資料」顯示側邊面板。按一下
即可關閉詳細資料面板。叢集建立完成後,系統會顯示「叢集狀態:執行中」。
叢集建立完成後,按一下「Clusters」(叢集)
,返回「Clusters」(叢集) 頁面。登入使用者叢集:
按一下叢集名稱的連結,然後在側邊面板中按一下「登入」。
選取「使用 Google 帳戶登入」。
按一下 [Login] (登入)。
重複上述步驟,登入管理員叢集。
執行下列指令來建立使用者叢集:
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
。如要瞭解作業狀態,請開啟另一個終端機視窗並執行指令。
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」頁面。執行下列指令來建立節點集區:
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].
前往控制台的「Kubernetes clusters」(Kubernetes 叢集) 頁面:
確認已選取您建立使用者叢集的專案。 清單中應該會顯示管理員和使用者叢集。
登入使用者叢集:
按一下叢集名稱的連結,然後在側邊面板中按一下「登入」。
選取「使用 Google 帳戶登入」。
按一下 [Login] (登入)。
重複上述步驟登入管理員叢集。
在您複製
anthos-samples
的目錄中,變更為 Terraform 範例所在的目錄:cd anthos-samples/anthos-onprem-terraform/abm_user_cluster_metallb
範例提供範例變數檔案,可傳遞至
main.tf
。建立
terraform.tfvars.sample
檔案副本:cp terraform.tfvars.sample terraform.tfvars
驗證下列範例中的值:
下列 Terraform 變數檔案
terraform.tfvars.sample
已預先填入 IP 位址,以及您在本指南先前章節中輸入的值。將
ADMIN_2_EMAIL_ADDRESS
替換為與 Google Cloud 帳戶相關聯的電子郵件地址,或在編輯變數檔案時移除該地址。如要進一步瞭解這個範例中您要設定變數的引數,請參閱裸機使用者叢集的 Terraform 說明文件中的「引數參考資料」。
將變數檔案副本的內容,替換為上述範例的內容。
初始化並建立 Terraform 方案:
terraform init
Terraform 會安裝任何需要的程式庫,例如 Google Cloud 供應商。
檢查設定並視需要進行變更:
terraform plan
套用 Terraform 方案,建立使用者叢集:
terraform apply
建立使用者叢集需要 15 分鐘以上的時間。您可以在 Google Cloud 控制台的「GKE clusters」(GKE 叢集) 頁面中查看叢集。
前往 Google Cloud 控制台的「GKE clusters」(GKE 叢集) 頁面。
確認已選取您建立使用者叢集的專案。 清單中應該會顯示管理員和使用者叢集。
登入使用者叢集:
按一下叢集名稱的連結,然後在側邊面板中按一下「登入」。
選取「使用 Google 帳戶登入」。
按一下 [Login] (登入)。
重複上述步驟登入管理員叢集。
如要使用
bmctl
刪除使用者叢集,請從管理工作站 VM 執行下列指令:abm-ws
bmctl reset \ --cluster abm-user-cluster-metallb \ --admin-kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
前往控制台的「GKE clusters」(GKE 叢集) 頁面。
在叢集清單中,按一下使用者叢集。
在「詳細資料」面板中,按一下「查看更多詳細資料」。
按一下視窗頂端附近的「刪除」
。系統提示您確認時,請輸入叢集名稱,然後按一下「Delete」(刪除)。
按一下右上角的
,即可查看刪除狀態。您可能需要重新整理頁面,才能更新叢集清單。如要刪除叢集,請執行下列指令:
gcloud container bare-metal clusters delete abm-user-cluster-metallb \ --project=PROJECT_ID \ --location=ON_PREM_API_REGION \ --force
--force
標記可讓您刪除含有節點集區的叢集。如果沒有--force
標記,您必須先刪除節點集區,然後再刪除叢集。從 Terraform 使用者叢集範例檔案 (例如
main.tf
) 所在的目錄執行下列指令:terraform destroy
從 GKE On-Prem API 取消註冊管理員叢集:
gcloud container bare-metal admin-clusters unenroll ADMIN_CLUSTER_NAME \ --project=PROJECT_ID \ --location=ON_PREM_API_REGION
連線至管理員工作站:
gcloud compute ssh root@abm-ws --zone ZONE
刪除管理員叢集:
bmctl reset -c ADMIN_CLUSTER_NAME
bmctl
會取消註冊機群中的叢集,然後刪除叢集。請先刪除叢集,再刪除 VM。退出管理員工作站:
exit
列出名稱中含有
abm
的所有 VM:gcloud compute instances list | grep 'abm'
確認您要刪除名稱中含有
abm
的所有 VM。驗證完成後,即可執行下列指令刪除
abm
VM:gcloud compute instances list --format="value(name)" | \ grep 'abm' | \ xargs gcloud compute instances delete --quiet --zone ZONE
執行下列指令刪除服務帳戶,並在系統提示時輸入
y
:gcloud iam service-accounts delete baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com
後續步驟
如要開始在自己的硬體上建立叢集,請參閱「規劃在硬體上進行基本安裝」和「在硬體上建立基本叢集」。
如需詳細安裝需求,請參閱「安裝先決條件總覽」。
如要進一步瞭解如何安裝,請參閱「叢集建立總覽」。
如需將應用程式部署至叢集的操作說明,請參閱「部署應用程式」。
2. 建立 VM 和網路
在本節中,您將下載並執行 install_admin_cluster.sh
指令碼。
3. 建立管理員叢集
bmctl
如要使用 bmctl
建立管理員叢集,請在終端機視窗中存取管理員工作站 VM,然後從該處執行指令:
驗證管理員叢集
您可以在根帳戶的 bmctl-workspace
目錄中,找到管理員工作站的管理員叢集 kubeconfig 檔案。如要驗證部署作業,請完成下列步驟:
主控台
如要在控制台中建立管理員叢集,您必須從管理員工作站 VM 執行 bmctl
register bootstrap
,建立啟動叢集。執行 bmctl register bootstrap
指令時,請在控制台中執行步驟,建立管理員叢集。
輸入啟動環境基本資訊
請改用下一節的步驟建立啟動叢集,而非控制台中顯示的步驟。請讓控制台頁面保持顯示狀態,因為您將繼續在該處建立管理員叢集。
建立啟動程序叢集
使用 GKE On-Prem API 用戶端 (例如控制台) 建立管理員叢集時,您需要在管理員工作站上建立啟動叢集。啟動叢集會託管建立管理員叢集所需的 Kubernetes 控制器。
建立管理員叢集
網路
驗證管理員叢集
您可以在根帳戶的 bmctl-workspace
目錄中,找到管理員工作站的管理員叢集 kubeconfig 檔案。如要驗證部署作業,請完成下列步驟:
gcloud CLI
下列操作說明需要兩個終端機視窗。在一個終端機視窗中,執行 bmctl register bootstrap
建立啟動程序叢集。執行 bmctl register bootstrap
指令時,請在另一個終端機視窗中執行 gcloud container
bare-metal admin-clusters create
,建立管理員叢集。
建立啟動程序叢集
使用 GKE On-Prem API 用戶端 (例如 gcloud CLI) 建立管理員叢集時,您需要在管理員工作站上建立啟動叢集。啟動叢集會託管建立管理員叢集所需的 Kubernetes 控制器。
建立管理員叢集
驗證管理員叢集
您可以在根帳戶的 bmctl-workspace
目錄中,找到管理員工作站的管理員叢集 kubeconfig 檔案。如要驗證部署作業,請完成下列步驟:
Terraform
下列操作說明需要兩個終端機視窗。在一個終端機視窗中,執行 bmctl register bootstrap
建立啟動程序叢集。在 bmctl register bootstrap
指令執行期間,您可以在另一個終端機視窗中執行 Terraform 指令,建立管理員叢集。
修改使用者叢集範例檔案,使其適用於管理員叢集
anthos-samples
存放區不包含專門用於建立 Google Distributed Cloud 管理員叢集的範例。下列步驟說明如何修改現有的使用者叢集 Terraform 範例,建立管理員叢集。
建立啟動程序叢集
使用 GKE On-Prem API 用戶端 (例如 Terraform) 建立管理員叢集時,您需要在管理員工作站建立啟動叢集。啟動叢集會託管建立管理員叢集所需的 Kubernetes 控制器。
建立管理員叢集
驗證管理員叢集
您可以在根帳戶的 bmctl-workspace
目錄中,找到管理員工作站的管理員叢集 kubeconfig 檔案。如要驗證部署作業,請完成下列步驟:
4. 建立使用者叢集
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 Terraform 建立使用者叢集。為求簡單易懂,請使用 abm-user-cluster-metallb
做為使用者叢集名稱,與 Terraform 指令碼中的硬式編碼名稱相符。
bmctl
主控台
請按照下列步驟,在控制台中建立使用者叢集:
叢集基本資訊
網路
您執行指令碼建立 VM 和管理員叢集時,也會在 10.200.0.0/24
子網路中建立具有 IP 位址的第 2 層 VXLAN。
建立節點集區
使用者叢集必須至少有一個工作站節點的節點集區。
建立叢集
gcloud CLI
如要建立使用者叢集,請按照下列步驟操作:
建立節點集區
叢集建立完成後,即可為叢集建立節點集區。
如要建立節點集區,請按照下列步驟操作:
Terraform
您可以使用下列基本設定範例,建立搭載 MetalLB 負載平衡器的使用者叢集。詳情請參閱google_gkeonprem_bare_metal_cluster
參考說明文件。
5. 清除所用資源
請按照下列操作說明,移除您使用本指南建立的叢集和 VM。
刪除使用者叢集
bmctl
控制台
gcloud CLI
如要瞭解其他標記,請參閱 gcloud container bare-metal clusters delete。
Terraform
terraform destroy
指令會終止您執行 terraform apply
建立使用者叢集時建立的資源。
請先刪除使用者叢集,再刪除管理員叢集和 VM。