本指南的第二部分將逐步說明如何安裝 Google Distributed Cloud 的小型概念驗證。第一部分是「設定最精簡的基礎架構」,說明如何規劃 IP 位址,以及為部署作業設定必要的 vSphere 和 Google Cloud 基礎架構。本文以您在前一節中完成的設定和規劃為基礎,說明如何在 vSphere 環境中建立管理員工作站、管理員叢集和使用者叢集,並使用簡單的範本 (您可以在本文中填寫)。接著,您可以部署應用程式。
如同這個簡單安裝作業的基礎架構設定,您使用本文件設定的叢集可能不適合實際的生產需求和用途。如要進一步瞭解生產環境安裝作業的最佳做法和操作說明,請參閱安裝指南。
事前準備
請確認您已按照「設定最低基礎架構」一文所述,設定 vSphere 和 Google Cloud 環境。
如要使用 Terraform 建立使用者叢集,您需要在管理員工作站或其他電腦上安裝 Terraform。
程序總覽
設定時的主要步驟如下:
使用具備建立服務帳戶必要權限的帳戶登入 Google Cloud CLI。
收集設定 Google Distributed Cloud 時所需的資訊,包括 vCenter 使用者名稱和密碼,以及您在上一個部分準備的 IP 位址。
建立管理工作站,其中包含建立管理員和使用者叢集所需的資源和工具,包括完成設定所需的額外服務帳戶。
建立管理員叢集,以便管理及更新使用者叢集。
建立使用者叢集來執行工作負載。
1. 登入 Google Cloud CLI
設定 Google Distributed Cloud 時,需要多個具有不同權限的服務帳戶。因此,您必須登入 Google Cloud CLI,並使用具備建立及設定服務帳戶必要權限的帳戶,因為 gkeadm
在進行這項設定時,會使用目前的 gcloud CLI account
屬性。
登入 gcloud CLI。您可以使用任何 Google 帳戶,但必須具備必要權限。如果您已按照本指南的上一部分操作,可能已使用適當的帳戶登入,以建立元件存取服務帳戶。
gcloud auth login
確認 gcloud CLI
account
屬性設定正確無誤:gcloud config list
輸出內容會顯示 SDK
account
屬性的值。 例如:[core] account = my-name@google.com disable_usage_reporting = False Your active configuration is: [default]
確認已安裝最新版 gcloud CLI 元件:
gcloud components update
視 gcloud CLI 的安裝方式而定,您可能會看到以下訊息:「You cannot perform this action because the Google Cloud CLI component manager is disabled for this installation. 您可以執行下列指令,為這個安裝作業達到相同結果:「請按照操作說明複製並貼上指令,更新元件。
2. 收集資訊
請使用您在「設定最少基礎架構」中準備的資訊,編輯下表中的預留位置:
vSphere 詳細資料 | |
---|---|
vCenter 帳戶的使用者名稱 | USERNAME |
vCenter 帳戶的密碼 | PASSWORD |
您的 vCenter Server 位址 | ADDRESS |
在您要用來建立管理工作站的機器上,vCenter Server 的根 CA 憑證路徑 | CA_CERT_PATH |
vSphere 資料中心的名稱 | DATA_CENTER |
vSphere 叢集名稱 | VSPHERE_CLUSTER |
vSphere 資源集區的名稱或路徑。詳情請參閱 vcenter.resourcePool。 | RESOURCE_POOL |
vSphere 資料儲存庫名稱 | DATASTORE |
vSphere 網路的名稱 | NETWORK |
IP 位址 | |
管理員工作站的 IP 位址 | ADMIN_WS_IP |
管理員叢集控制層節點的三個 IP 位址。 |
ADMIN_CONTROL_PLANE_NODE_IP_1 ADMIN_CONTROL_PLANE_NODE_IP_2 ADMIN_CONTROL_PLANE_NODE_IP_3 |
使用者叢集控制層節點的 IP 位址。 |
USER_CONTROL_PLANE_NODE_IP |
使用者叢集工作站節點的四個 IP 位址。包括升級和更新期間可使用的額外節點位址。 |
USER_NODE_IP_1 USER_NODE_IP_2 USER_NODE_IP_3 USER_NODE_IP_4 |
管理員叢集 Kubernetes API 伺服器的虛擬 IP 位址 (VIP) | ADMIN_CONTROL_PLANE_VIP |
使用者叢集 Kubernetes API 伺服器的 VIP | USER_CONTROL_PLANE_VIP |
使用者叢集的 Ingress VIP | USER_INGRESS_VIP |
使用者叢集中 LoadBalancer 類型的服務有兩個 VIP。 |
SERVICE_VIP_1 SERVICE_VIP_2 |
可從管理員工作站和叢集節點連線的 DNS 伺服器 IP 位址 | DNS_SERVER_IP |
可從管理員工作站和叢集節點連線的 NTP 伺服器 IP 位址 | NTP_SERVER_IP |
子網路的預設閘道 IP 位址,該子網路包含管理員工作站和叢集節點 | DEFAULT_GATEWAY_IP |
管理員工作站和叢集節點所在的子網路的網路遮罩 範例: 255.255.255.0 |
NETMASK |
如果您的網路位於 Proxy 伺服器後方,請輸入 Proxy 伺服器的網址。 詳情請參閱「proxy」。如有需要,請在管理員工作站設定檔中手動填寫這項資訊。 | PROXY_URL |
Service 和 Pod 的 CIDR 範圍 | |
管理員叢集和使用者叢集都需要 Service 的 CIDR 範圍和 Pod 的 CIDR 範圍。除非需要變更下列預先填入的值,避免與聯播網中的其他元素重疊,否則請使用這些值: | |
管理員叢集內 Service 的 CIDR 範圍 | 10.96.232.0/24 |
管理員叢集中的 Pod 適用的 CIDR 範圍 | 192.168.0.0/16 |
使用者叢集內 Service 的 CIDR 範圍 | 10.96.0.0/20 |
使用者叢集中的 Pod 適用的 CIDR 範圍 | 192.168.0.0/16 |
Google Cloud 詳細資料 | |
所選Cloud 專案的 ID | PROJECT_ID |
您在上一節中設定的元件存取服務帳戶 JSON 金鑰檔案路徑,位於您要用來建立管理工作站的機器上。 | COMPONENT_ACCESS_SA_KEY_PATH |
與帳戶相關聯的電子郵件地址。 Google Cloud
例如:alex@example.com 。 |
GOOGLE_ACCOUNT_EMAIL |
3. 建立管理員工作站
建立任何叢集之前,您需要建立管理工作站,然後使用 SSH 連線至該工作站。管理員工作站是獨立的 VM,內含在 vSphere 環境中建立 GKE Enterprise 叢集所需的工具和資源。您可以使用 gkeadm
指令列工具建立管理工作站。
下載 gkeadm
將 gkeadm
下載至目前的目錄:
gcloud storage cp gs://gke-on-prem-release/gkeadm/1.32.0-gke.1087/linux/gkeadm ./ chmod +x gkeadm
您需要 gkeadm
版本 (也是 Google Distributed Cloud 的版本),才能建立管理員和使用者叢集設定檔。如要檢查 gkeadm
的版本,請執行下列指令:
./gkeadm version
以下範例輸出內容顯示了版本。
gkeadm 1.32.0 (1.32.0-gke.1087)
雖然您可以下載其他版本的 gkeadm
,但本指南假設您要安裝 1.32.0-gke.1087,並在所有設定檔和指令中使用該版本。
建立憑證檔案
在目前目錄中建立並儲存名為 credential.yaml
的檔案,其中應包含以下內容:
apiVersion: v1 kind: CredentialFile items: - name: vCenter username: "USERNAME" password: "PASSWORD"
建立管理員工作站設定檔
在目前目錄中建立並儲存名為 admin-ws-config.yaml
的檔案,並加入下列內容:
gcp: componentAccessServiceAccountKeyPath: "COMPONENT_ACCESS_SA_KEY_PATH" vCenter: credentials: address: "ADDRESS" fileRef: path: "credential.yaml" entry: "vCenter" datacenter: "DATA_CENTER" datastore: "DATASTORE" cluster: "VSPHERE_CLUSTER" network: "NETWORK" resourcePool: "RESOURCE_POOL" caCertPath: "CA_CERT_PATH" proxyUrl: "" adminWorkstation: name: "minimal-installation-admin-workstation" cpus: 4 memoryMB: 8192 diskGB: 50 dataDiskName: gke-on-prem-admin-workstation-data-disk/minimal-installation-data-disk.vmdk dataDiskMB: 512 network: ipAllocationMode: "static" hostConfig: ip: "ADMIN_WS_IP" gateway: "DEFAULT_GATEWAY_IP" netmask: "NETMASK" dns: - "DNS_SERVER_IP" proxyUrl: "" ntpServer: ntp.ubuntu.com
建立管理員工作站
使用下列指令建立管理員工作站:
./gkeadm create admin-workstation --auto-create-service-accounts
執行下列指令:
- 建立管理員工作站
- 自動建立安裝作業所需的任何其他服務帳戶
- 為管理員和使用者叢集建立範本設定檔
輸出內容會提供管理工作站的建立詳細資訊,以及可用於取得管理工作站安全殼層連線的指令。例如:
... Admin workstation is ready to use. Admin workstation information saved to /usr/local/google/home/me/my-admin-workstation This file is required for future upgrades SSH into the admin workstation with the following command: ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.20.49 ********************************************************************
在上述輸出內容中,IP 位址僅為範例。管理工作站的 IP 位址會有所不同。記下管理工作站的 IP 位址。在下一步中將會用到。
如要進一步瞭解如何建立管理員工作站,請參閱建立管理員工作站。
連線至管理工作站
使用上述輸出內容中顯示的指令,取得管理工作站的 SSH 連線。例如:
ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.20.49
如需再次尋找這項指令,gkeadm
會在本機電腦上執行 gkeadm create admin-workstation
的目錄中,產生名為 gke-admin-ws-...
的檔案。其中包含管理員工作站的詳細資料,包括 SSH 指令。
在管理工作站上輸入 exit
,終止 SSH 連線並返回本機。
將稽核記錄金鑰複製到管理員工作站
在上一節中,您已為稽核記錄服務帳戶建立 JSON 金鑰檔案。
將 JSON 金鑰檔案複製到管理工作站的主目錄。 舉例來說,該變數可以指定您本機機器的下列位置:
scp -i /usr/local/google/home/me/.ssh/gke-admin-workstation audit-logging-key.json ubuntu@172.16.20.49:~
查看管理員工作站上的檔案
再次取得管理工作站的 SSH 連線。
在管理員工作站上,列出主目錄中的檔案:
ls -1
輸出內容應包含:
admin-cluster.yaml
:用於建立管理員叢集的範本設定檔。user-cluster.yaml
,用於建立使用者叢集的範本設定檔。- 您在管理員工作站設定中指定的 vCenter 憑證檔案
- 您在管理員工作站設定中指定的
credential.yaml
檔案。 - 稽核記錄服務帳戶的 JSON 金鑰檔案。
- 系統為您建立的兩個服務帳戶 (連線註冊服務帳戶和記錄監控服務帳戶) 的 JSON 金鑰檔案,以及您先前建立的元件存取服務帳戶金鑰檔案。
gkeadm
例如:
admin-cluster.yaml admin-ws-config.yaml audit-logging-key.json sa-key.json connect-register-sa-2203040617.json credential.yaml log-mon-sa-2203040617.json logs vc01-cert.pem user-cluster.yaml
您需要在設定檔中指定部分檔案名稱,才能建立叢集。請使用檔案名稱做為下表中預留位置的值:
Connect-register 服務帳戶金鑰檔案名稱 範例: connect-register-sa-2203040617.json |
CONNECT_REGISTER_SA_KEY |
記錄監控服務帳戶金鑰檔案名稱 範例: log-mon-sa-2203040617.json |
LOG_MON_SA_KEY |
稽核記錄服務帳戶金鑰檔案名稱 範例: audit-logging-key.json |
AUDIT_LOG_SA_KEY |
元件存取服務帳戶金鑰檔案名稱 範例: sa-key.json |
COMPONENT_ACCESS_SA_KEY |
vCenter 憑證檔案名稱 範例: vc01-cert.pem |
CA_CERT_FILE |
4. 建立管理員叢集
您現在已設定管理員工作站,並提供 vCenter 和其他詳細資料,可以透過這個工作站,在 vSphere 環境中建立管理員叢集。開始這個步驟之前,請確保您已建立與管理員工作站的 SSH 連線,如先前所述。下列所有指令都會在管理員工作站上執行。
建立管理員叢集設定檔
開啟 admin-cluster.yaml
,並將內容替換為下列程式碼:
apiVersion: v1 kind: AdminCluster name: "minimal-installation-admin-cluster" bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.32.0-gke.1087-full.tgz" vCenter: address: "ADDRESS" datacenter: "DATA_CENTER" cluster: "VSPHERE_CLUSTER" resourcePool: "RESOURCE_POOL" datastore: "DATASTORE" caCertPath: "CA_CERT_FILE" credentials: fileRef: path: "credential.yaml" entry: "vCenter" network: hostConfig: dnsServers: - "DNS_SERVER_IP" ntpServers: - "NTP_SERVER_IP" serviceCIDR: "10.96.232.0/24" podCIDR: "192.168.0.0/16" vCenter: networkName: "NETWORK" controlPlaneIPBlock: netmask: "NETMASK" gateway: "DEFAULT_GATEWAY_IP" ips: - ip: "ADMIN_CONTROL_PLANE_NODE_IP_1" hostname: "admin-cp-vm-1" - ip: "ADMIN_CONTROL_PLANE_NODE_IP_2" hostname: "admin-cp-vm-2" - ip: "ADMIN_CONTROL_PLANE_NODE_IP_3" hostname: "admin-cp-vm-3" loadBalancer: vips: controlPlaneVIP: "ADMIN_CONTROL_PLANE_VIP" kind: "MetalLB" adminMaster: cpus: 4 memoryMB: 16384 replicas: 3 antiAffinityGroups: enabled: false componentAccessServiceAccountKeyPath: "COMPONENT_ACCESS_SA_KEY" gkeConnect: projectID: "PROJECT_ID" registerServiceAccountKeyPath: "CONNECT_REGISTER_SA_KEY" stackdriver: projectID: "PROJECT_ID" clusterLocation: "us-central1" enableVPC: false serviceAccountKeyPath: "LOG_MON_SA_KEY" disableVsphereResourceMetrics: false cloudAuditLogging: projectID: "PROJECT_ID" clusterLocation: us-central1 serviceAccountKeyPath: "AUDIT_LOG_SA_KEY"
驗證管理員叢集設定檔
確認管理員叢集設定檔有效,且可用於建立叢集:
gkectl check-config --config admin-cluster.yaml
將 OS 映像檔匯入 vSphere
使用完成的設定檔執行 gkectl prepare
,將節點 OS 映像檔匯入 vSphere:
gkectl prepare --config admin-cluster.yaml --skip-validation-all
執行這項指令會將映像檔匯入 vSphere,並將其標示為 VM 範本,包括管理員叢集的映像檔。
這個指令可能需要幾分鐘才能傳回。
建立管理員叢集
建立管理員叢集:
gkectl create admin --config admin-cluster.yaml
在失敗後繼續建立管理員叢集
如果管理員叢集建立失敗或取消,您可以再次執行 create
指令:
gkectl create admin --config admin-cluster.yaml
找出管理員叢集 kubeconfig 檔案
gkectl create admin
指令會在目前目錄中建立名為 kubeconfig
的 kubeconfig 檔案。您稍後需要這個 kubeconfig 檔案,才能與管理員叢集互動。
確認管理員叢集正在執行中
確認管理員叢集正在執行中:
kubectl get nodes --kubeconfig kubeconfig
輸出內容會顯示管理員叢集節點。例如:
admin-cp-vm-1 Ready control-plane,master ... admin-cp-vm-2 Ready control-plane,master ... admin-cp-vm-3 Ready control-plane,master ...
啟用 RBAC 授權
如要為使用者帳戶授予叢集上的 Kubernetes clusterrole/cluster-admin
角色,請執行下列指令:
gcloud container fleet memberships generate-gateway-rbac \ --membership=minimal-installation-admin-cluster \ --role=clusterrole/cluster-admin \ --users=GOOGLE_ACCOUNT_EMAIL \ --project=PROJECT_ID \ --kubeconfig=kubeconfig \ --context=minimal-installation-admin-cluster \ --apply
這個指令會輸出類似以下的結果,為方便閱讀,以下只列出部分內容:
Validating input arguments. Specified Cluster Role is: clusterrole/cluster-admin Generated RBAC policy is: -------------------------------------------- ... Applying the generate RBAC policy to cluster with kubeconfig: kubeconfig, context: minimal-installation-admin-cluster Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster. Successfully applied the RBAC policy to cluster.
除了其他功能外,您還可以使用 RBAC 政策,透過 Google 身分登入Google Cloud 控制台中的叢集,查看更多叢集詳細資料。
自動註冊 GKE On-Prem API
由於專案已啟用 GKE On-Prem API,叢集會自動註冊 GKE On-Prem API。將管理員叢集登錄至 GKE On-Prem API 後,您就能使用標準工具 (Google Cloud 控制台、Google Cloud CLI 或 Terraform),建立、升級、更新及刪除管理員叢集管理的使用者叢集。註冊叢集後,您也可以執行 gcloud
指令來取得叢集相關資訊。
5. 建立使用者叢集
本節提供使用控制台、gkectl
、Terraform 或 gcloud CLI 建立使用者叢集的步驟。
gkectl
開始這個程序之前,請確保您已建立與管理員工作站的 SSH 連線,如先前所述。下列所有指令都會在管理員工作站上執行。
建立使用者叢集 IP 區塊檔案
建立名為
user-ipblock.yaml
的檔案。複製下列內容並貼到
user-ipblock.yaml
,然後儲存檔案:blocks: - netmask: "NETMASK" gateway: "DEFAULT_GATEWAY_IP" ips: - ip: "USER_NODE_IP_1" hostname: "user-vm-1" - ip: "USER_NODE_IP_2" hostname: "user-vm-2" - ip: "USER_NODE_IP_3" hostname: "user-vm-3" - ip: "USER_NODE_IP_4" hostname: "user-vm-4"
建立使用者叢集設定檔
在
user-ipblock.yaml
所在的目錄中,建立名為user-cluster.yaml
的檔案。複製下列內容並貼到
user-cluster.yaml
,然後儲存檔案:
apiVersion: v1 kind: UserCluster name: "minimal-installation-user-cluster" gkeOnPremVersion: "1.32.0-gke.1087" enableControlplaneV2: true network: hostConfig: dnsServers: - "DNS_SERVER_IP" ntpServers: - "NTP_SERVER_IP" ipMode: type: "static" ipBlockFilePath: "user-ipblock.yaml" serviceCIDR: "10.96.0.0/20" podCIDR: "192.168.0.0/16" controlPlaneIPBlock: netmask: "NETMASK" gateway: "DEFAULT_GATEWAY_IP" ips: - ip: "USER_CONTROL_PLANE_NODE_IP" hostname: "cp-vm-1" loadBalancer: vips: controlPlaneVIP: "USER_CONTROL_PLANE_VIP" ingressVIP: "USER_INGRESS_VIP" kind: "MetalLB" metalLB: addressPools: - name: "uc-address-pool" addresses: - "USER_INGRESS_VIP/32" - "SERVICE_VIP_1/32" - "SERVICE_VIP_2/32" enableDataplaneV2: true nodePools: - name: "uc-node-pool" cpus: 4 memoryMB: 8192 replicas: 3 enableLoadBalancer: true antiAffinityGroups: enabled: false gkeConnect: projectID: "PROJECT_ID" registerServiceAccountKeyPath: "CONNECT_REGISTER_SA_KEY" stackdriver: projectID: "PROJECT_ID" clusterLocation: "us-central1" enableVPC: false serviceAccountKeyPath: "LOG_MON_SA_KEY" disableVsphereResourceMetrics: false autoRepair: enabled: true
驗證設定並建立叢集
確認使用者叢集設定檔有效,且可用於建立叢集:
gkectl check-config --kubeconfig kubeconfig --config user-cluster.yaml
建立使用者叢集:
gkectl create cluster --kubeconfig kubeconfig --config user-cluster.yaml
叢集建立作業大約需要 30 分鐘。
找出使用者叢集 kubeconfig 檔案
gkectl create cluster
指令會在目前目錄中建立名為 USER_CLUSTER_NAME-kubeconfig
的 kubeconfig 檔案。稍後您需要這個 kubeconfig 檔案,才能與使用者叢集互動。
確認使用者叢集正在執行中
確認使用者叢集正在執行:
kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG
將 USER_CLUSTER_KUBECONFIG 替換為使用者叢集 kubeconfig 檔案的路徑。
輸出內容會顯示使用者叢集節點。例如:
cp-vm-1 Ready control-plane,master user-vm-1 Ready user-vm-2 Ready user-vm-3 Ready
啟用 RBAC 授權
如要為使用者帳戶授予叢集上的 Kubernetes clusterrole/cluster-admin
角色,請執行下列指令:
gcloud container fleet memberships generate-gateway-rbac \ --membership=minimal-installation-user-cluster \ --role=clusterrole/cluster-admin \ --users=GOOGLE_ACCOUNT_EMAIL \ --project=PROJECT_ID \ --kubeconfig=USER_CLUSTER_KUBECONFIG \ --context=minimal-installation-user-cluster \ --apply
這個指令會輸出類似以下的結果,為方便閱讀,以下只列出部分內容:
Validating input arguments. Specified Cluster Role is: clusterrole/cluster-admin Generated RBAC policy is: -------------------------------------------- ... Applying the generate RBAC policy to cluster with kubeconfig: kubeconfig, context: minimal-installation-admin-cluster Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster. Successfully applied the RBAC policy to cluster.
除了其他功能外,您還可以使用 RBAC 政策,透過 Google 身分登入Google Cloud 控制台中的叢集,查看更多叢集詳細資料。
自動註冊 GKE On-Prem API
由於專案已啟用 GKE On-Prem API,叢集會自動註冊 GKE On-Prem API。這樣一來,您就能透過控制台或 gcloud CLI 查看叢集詳細資料,以及管理叢集生命週期。舉例來說,您可以執行 gcloud
指令來取得使用者叢集的相關資訊。
控制台
前往 Google Cloud 控制台的「建立 Google Distributed Cloud 叢集」頁面。
選取要建立叢集的 Google Cloud 專案。 選取的專案也會做為機群主專案。這必須是管理員叢集註冊的專案。建立使用者叢集後,系統會自動向所選專案的機群註冊。
以下各節將逐步引導您設定使用者叢集。
必要條件
請詳閱「先決條件」頁面上的資訊。
按一下頁面底部的「下一步」。
叢集基本資訊
在「Name」(名稱) 部分,輸入使用者叢集的名稱,例如
minimal-installation-user-cluster
。在「管理員叢集」部分,選取「minimal-installation-admin-cluster」。
在「GCP API Location」(GCP API 位置) 欄位中,選取「us-central1」。
在「版本」中,選取 1.32.0-gke.1087。
您不需要開啟「授權」部分或「vCenter 設定」部分。
點選「下一步」。
控制層
在「控制層節點 IP」下方,輸入「閘道」的 DEFAULT_GATEWAY_IP。
針對「Subnet mask」(子網路遮罩) 輸入 NETMASK。
在「IP addresses」(IP 位址) 下方,為「IP address 1」(IP 位址 1) 輸入 USER_CONTROL_PLANE_NODE_IP。將「Hostname 1」(主機名稱 1) 留空。
點選「下一步」。
網路
在本節中,您將指定叢集節點、Pod 和 Service 的 IP 位址。使用者叢集需要為每個節點提供一個 IP 位址,並為叢集升級、更新和自動修復期間所需的暫時節點提供額外 IP 位址。詳情請參閱「使用者叢集需要多少 IP 位址?」。
在「工作站節點 IP」下方,確認已選取「IP 模式」的「靜態」。
在「Gateway」(閘道) 中輸入 DEFAULT_GATEWAY_IP。
針對「Subnet mask」(子網路遮罩) 輸入 NETMASK。
在「IP 位址」下方輸入下列位址:
- USER_NODE_IP_1
- USER_NODE_IP_2
- USER_NODE_IP_3
- USER_NODE_IP_4
將「Hostname」欄位留空。
在「Service CIDR」(服務 CIDR) 中輸入 10.96.0.0/20。在「Pod CIDR」中輸入 192.168.0.0/16。
在「DNS Server 1」(DNS 伺服器 1) 中,輸入 DNS_SERVER_IP。
在「NTP Server 1」中輸入 NTP_SERVER_IP。
將「DNS 搜尋網域」留空。
點選「下一步」。
負載平衡器
在「Load balancer type」(負載平衡器類型) 中,選取「Bundled with MetalLB」(與 MetalLB 組合)。
在「位址集區」下方,使用預設名稱。
在「IP addresses」(IP 位址) 下方,針對「IP address range 1」(IP 位址範圍 1) 輸入 USER_INGRESS_VIP/32。
按一下「新增 IP 位址範圍」。在「IP address range 1」(IP 位址範圍 1) 中,輸入 SERVICE_VIP_1/32
按一下「新增 IP 位址範圍」。在「IP address range 2」(IP 位址範圍 2) 中,輸入 SERVICE_VIP_2/32
在「指派 IP 位址」部分,選取「自動」。
取消勾選「避免使用發生錯誤的 IP 位址」。
在「虛擬 IP」下方,輸入「控制層 VIP」。 USER_CONTROL_PLANE_VIP。 系統已填入 Ingress VIP。
按一下「繼續」。
功能
保留所有預設值。
點選「下一步」。
節點集區
保留所有預設值。
按一下「驗證並完成」,建立使用者叢集。建立使用者叢集需要 15 分鐘以上。主控台會顯示狀態訊息,驗證設定並在資料中心建立叢集。
如果驗證設定時發生錯誤,控制台會顯示錯誤訊息,您應該能據此修正設定問題,然後再次嘗試建立叢集。
如要進一步瞭解可能發生的錯誤和修正方法,請參閱「排解在 GKE On-Prem API 中註冊的叢集問題」。
Terraform
本節說明如何使用 Terraform 建立使用者叢集和節點集區。如需更多資訊和其他範例,請參閱下列資源:
建立目錄,並在該目錄中建立新檔案。檔案名稱的副檔名必須為
.tf
。在本指南中,這個檔案稱為main.tf
。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
驗證使用者叢集 Terraform 資源:
下列 Terraform 資源範例已填入您在上一節規劃表輸入的值。
resource "google_gkeonprem_vmware_cluster" "cluster-basic" { name = "minimal-installation-user-cluster" project = "PROJECT_ID" location = "us-central1" admin_cluster_membership = "projects/PROJECT_ID/locations/global/memberships/minimal-installation-admin-cluster" description = "User cluster config with MetalLB, static IPs, and Controlplane V2" enable_control_plane_v2 = "true" on_prem_version = "1.32.0-gke.1087" control_plane_node { cpus = 4 memory = 8192 replicas = 1 } network_config { service_address_cidr_blocks = ["10.96.0.0/20"] pod_address_cidr_blocks = ["192.168.0.0/16"] host_config { dns_servers = ["DNS_SERVER_IP"] ntp_servers = ["NTP_SERVER_IP"] } static_ip_config { ip_blocks { netmask = "NETMASK" gateway = "DEFAULT_GATEWAY_IP" ips { ip = "USER_NODE_IP_1" hostname = "user-vm-1" } ips { ip = "USER_NODE_IP_2" hostname = "user-vm-2" } ips { ip = "USER_NODE_IP_3" hostname = "user-vm-3" } ips { ip = "USER_NODE_IP_4" hostname = "user-vm-4" } } } control_plane_v2_config { control_plane_ip_block { netmask = "NETMASK" gateway = "DEFAULT_GATEWAY_IP" ips { ip = "USER_CONTROL_PLANE_NODE_IP" hostname = "cp-vm-1" } } } } load_balancer { vip_config { control_plane_vip = "USER_CONTROL_PLANE_VIP" ingress_vip = "USER_INGRESS_VIP" } metal_lb_config { address_pools { pool = "uc-address-pool" manual_assign = "true" addresses = ["USER_INGRESS_VIP/32", "SERVICE_VIP_1/32", "SERVICE_VIP_2/32"] } } } authorization { admin_users { username = "GOOGLE_ACCOUNT_EMAIL" } } provider = google-beta } resource "google_gkeonprem_vmware_node_pool" "my-node-pool-1" { name = "uc-node-pool" project = "PROJECT_ID" vmware_cluster = "minimal-installation-user-cluster" location = "us-central1" config { replicas = 3 image_type = "ubuntu_containerd" enable_load_balancer = "true" } depends_on = [ google_gkeonprem_vmware_cluster.cluster-basic ] provider = google-beta }
將 Terraform 資源複製到
main.tf
,然後儲存檔案。初始化並建立 Terraform 方案:
terraform init
Terraform 會安裝任何需要的程式庫,例如 Google Cloud 供應商。
檢查設定並視需要進行變更:
terraform plan
套用 Terraform 方案,建立使用者叢集:
terraform apply
系統顯示提示訊息時,請輸入
yes
。建立基本使用者叢集和節點集區大約需要 15 分鐘 (視網路而定)。
gcloud
建立叢集:
gcloud container vmware clusters create minimal-installation-user-cluster \ --project=PROJECT_ID \ --admin-cluster-membership=projects/PROJECT_ID/locations/global/memberships/minimal-installation-admin-cluster \ --location=us-central1 \ --version=1.32.0-gke.1087 \ --admin-users=GOOGLE_ACCOUNT_EMAIL \ --service-address-cidr-blocks=10.96.0.0/20 \ --pod-address-cidr-blocks=192.168.0.0/16 \ --metal-lb-config-address-pools='pool=uc-address-pool,avoid-buggy-ips=False,manual-assign=False,addresses=USER_INGRESS_VIP/32;SERVICE_VIP_1/32;SERVICE_VIP_2/32' \ --control-plane-vip=USER_CONTROL_PLANE_VIP \ --ingress-vip=USER_INGRESS_VIP \ --static-ip-config-ip-blocks='gateway=DEFAULT_GATEWAY_IP,netmask=NETMASK,ips=USER_NODE_IP_1;USER_NODE_IP_2;USER_NODE_IP_3;USER_NODE_IP_4' \ --dns-servers=DNS_SERVER_IP \ --ntp-servers=NTP_SERVER_IP \ --enable-control-plane-v2 \ --enable-dataplane-v2 \ --control-plane-ip-block='gateway=DEFAULT_GATEWAY_IP,netmask=NETMASK,ips=USER_CONTROL_PLANE_NODE_IP'
指令輸出內容如下所示:
Waiting for operation [projects/example-project-12345/locations/us-central1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
在範例輸出內容中,字串 operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179
是長時間執行的作業的 OPERATION_ID
。您可以使用下列指令查詢作業狀態:
gcloud container vmware operations describe OPERATION_ID \ --project=PROJECT_ID \ --location=us-central1
詳情請參閱 gcloud container vmware operations。
建立使用者叢集需要 15 分鐘以上的時間。您可以在Google Kubernetes Engine 叢集總覽頁面的控制台中查看叢集。
建立節點集區:
gcloud container vmware node-pools create uc-node-pool \ --cluster=minimal-installation-user-cluster \ --project=PROJECT_ID \ --location=us-central1 \ --image-type=ubuntu_containerd \ --boot-disk-size=40 \ --cpus=4 \ --memory=8192 \ --replicas=3 \ --enable-load-balancer
後續步驟
您已完成 Google Distributed Cloud 的最低安裝需求。您可以選擇部署應用程式,查看安裝作業的實際運作情形。