本指南的第二部分將逐步說明如何安裝 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 類型的 Service 專用兩個 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 詳細資料 | |
| 所選雲端專案的 ID | PROJECT_ID | 
| 您在上一節中設定的元件存取服務帳戶 JSON 金鑰檔案路徑,位於您要用來建立管理工作站的電腦上。 | COMPONENT_ACCESS_SA_KEY_PATH | 
| 與帳戶相關聯的電子郵件地址。 Google Cloud
      例如: alex@example.com。 | GOOGLE_ACCOUNT_EMAIL | 
3. 建立管理員工作站
建立任何叢集之前,您需要建立管理工作站,然後使用 SSH 連線至該工作站。管理工作站是獨立的 VM,內含在 vSphere 環境中建立 Google Distributed Cloud 叢集所需的工具和資源。您可以使用 gkeadm 指令列工具建立管理工作站。
下載 gkeadm
將 gkeadm 下載至目前的目錄:
gcloud storage cp gs://gke-on-prem-release/gkeadm/1.32.300-gke.85/linux/gkeadm ./ chmod +x gkeadm
您需要 gkeadm 版本 (也是 Google Distributed Cloud 的版本),才能建立管理員和使用者叢集設定檔。如要檢查 gkeadm 的版本,請執行下列指令:
./gkeadm version
以下範例輸出內容顯示了版本。
gkeadm 1.33.100 (1.32.300-gke.85)
雖然您可以下載其他版本的 gkeadm,但本指南假設您要安裝 1.32.300-gke.85,並在所有設定檔和指令中使用該版本。
建立憑證檔案
在目前目錄中建立並儲存名為 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.300-gke.85-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.300-gke.85"
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.300-gke.85」。 
- 您不需要開啟「授權」部分或「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.300-gke.85" 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.300-gke.85 \ --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 的最低安裝需求。您可以選擇部署應用程式,查看安裝作業的實際運作情形。