本指南分為兩部分,第二部分將逐步說明如何安裝 Google Distributed Cloud 的小型概念驗證。第一部分是「設定最精簡的基礎架構」,說明如何規劃 IP 位址,以及設定部署作業所需的 vSphere 和 Google Cloud 基礎架構。本文以您在上一節完成的設定和規劃為基礎,說明如何使用可在此文件中填寫的範本,在 vSphere 環境中建立管理員工作站、管理員叢集和使用者叢集。接著,您可以繼續部署應用程式。
與這項基本安裝作業的基礎架構設定一樣,您使用本文件設定的叢集可能不適合實際的正式環境需求和用途。如需更多資訊、最佳做法和正式版安裝操作說明,請參閱安裝指南。
在 1.33 以上版本中,所有新叢集都會建立為進階叢集。請務必詳閱「執行進階叢集時的差異」和「叢集建立和升級差異」。
事前準備
請務必按照「設定基本基礎架構」一文所述,設定 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 gcloud 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 位址,用於使用者叢集 worker 節點。包括升級和更新期間可使用的額外節點位址。 |
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.36.200-gke.118/linux/gkeadm ./ chmod +x gkeadm
您需要 gkeadm 版本 (也是 Google Distributed Cloud 的版本),才能建立管理員和使用者叢集設定檔。如要查看 gkeadm 的版本,請執行下列指令:
./gkeadm version
以下輸出範例顯示版本。
gkeadm 1.36.200 (1.36.200-gke.118)
雖然您可以下載其他版本的 gkeadm,但本指南假設您安裝的是 1.36.200-gke.118,並在所有設定檔和指令中使用該版本。
建立憑證檔案
在目前目錄中建立並儲存名為 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: 100
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
執行下列指令:
- 建立管理員工作站
- 自動建立安裝所需的任何其他服務帳戶
- 為管理員和使用者叢集建立範本設定檔
輸出內容會提供管理員工作站建立作業的詳細資訊,以及可用來取得管理員工作站 SSH 連線的指令。例如:
... 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 金鑰檔案。
gkeadm為您建立的兩個服務帳戶 JSON 金鑰檔案:連線註冊服務帳戶和記錄監控服務帳戶,以及您先前建立的元件存取服務帳戶金鑰檔案。
例如:
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.36.200-gke.118-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 Identity 登入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.36.200-gke.118"
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 指令的支援:1.32.700+、1.33.300+ 和 1.34.0 以上版本。如果要在進階叢集上安裝較低版本,指令會失敗。
確認使用者叢集設定檔有效,且可用於建立叢集:
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 Identity 登入Google Cloud 控制台中的叢集,查看更多叢集詳細資料。
自動註冊 GKE On-Prem API
由於專案已啟用 GKE On-Prem API,叢集會自動註冊至 GKE On-Prem API。這樣一來,您就能使用控制台或 gcloud CLI 查看叢集詳細資料,以及管理叢集生命週期。例如,您可以執行 gcloud 指令,取得使用者叢集的相關資訊。
控制台
在 Google Cloud 控制台中,前往「Create a Google Distributed Cloud cluster」(建立 Google Distributed Cloud 叢集) 頁面。
前往「Create a Google Distributed Cloud cluster」(建立 Google Distributed Cloud 叢集)
選取要建立叢集的 Google Cloud 專案。所選專案也會做為機群主專案。這必須與管理員叢集註冊的專案相同。使用者叢集建立後,會自動註冊至所選專案的機群。
以下各節將引導您設定使用者叢集。
必要條件
熟悉「先決條件」頁面上的資訊。
按一下頁面底部的「下一步」。
叢集基本資訊
在「Name」(名稱) 部分,輸入使用者叢集的名稱,例如
minimal-installation-user-cluster。在「管理員叢集」部分,選取「minimal-installation-admin-cluster」。
在「GCP API Location」(GCP API 位置) 欄位中,選取「us-central1」。
在「版本」部分,選取「1.36.200-gke.118」。
您不需要開啟「Authorization」(授權) 專區或「vCenter configuration」(vCenter 設定) 專區。
點選「下一步」。
控制層
在「Control plane node IPs」(控制層節點 IP) 下方的「Gateway」(閘道) 中,輸入 DEFAULT_GATEWAY_IP。
在「Subnet mask」(子網路遮罩) 中,輸入 NETMASK。
在「IP addresses」(IP 位址) 下方,針對「IP address 1」(IP 位址 1) 輸入 USER_CONTROL_PLANE_NODE_IP。將「Hostname 1」留空。
點選「下一步」。
網路
在本節中,您將指定叢集節點、Pod 和 Service 的 IP 位址。使用者叢集中的每個節點都需要一個 IP 位址,並為叢集升級、更新和自動修復期間所需的臨時節點提供額外的 IP 位址。詳情請參閱「使用者叢集需要多少 IP 位址?」一文。
在 Worker node IPs (worker 節點 IP) 下方,確認 IP mode (IP 模式) 已選取 Static (靜態)。
在「Gateway」(閘道) 中輸入 DEFAULT_GATEWAY_IP。
在「Subnet mask」(子網路遮罩) 中,輸入 NETMASK。
在「IP addresses」(IP 位址) 下方,輸入下列位址:
- USER_NODE_IP_1
- USER_NODE_IP_2
- USER_NODE_IP_3
- USER_NODE_IP_4
將「Hostname」欄位留空。
在「Service CIDR」中輸入 10.96.0.0/20。在「Pod CIDR」中輸入 192.168.0.0/16。
在「DNS Server 1」中輸入 DNS_SERVER_IP。
在「NTP Server 1」中輸入 NTP_SERVER_IP。
將「DNS 搜尋網域」留空。
點選「下一步」。
負載平衡器
在「Load balancer type」(負載平衡器類型) 部分,選取「Bundled with MetalLB」(與 MetalLB 搭配)。
在「Address pools」(位址集區) 下方,使用預設名稱。
在「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 位址指派」部分,選取「自動」。
不勾選「Avoid buggy IP addresses」(避免使用發生錯誤的 IP 位址)。
在「Virtual IPs」(虛擬 IP) 下方,為「Control plane VIP」(控制層 VIP) 輸入 USER_CONTROL_PLANE_VIP。系統已填入「Ingress VIP」。
按一下「繼續」。
功能與特色
其餘設定均保留預設值。
點選「下一步」。
節點集區
其餘設定均保留預設值。
按一下「Verify and Complete」(驗證並完成),建立使用者叢集。建立使用者叢集需要 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.36.200-gke.118" 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 initTerraform 會安裝所有必要程式庫,例如 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.36.200-gke.118 \ --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 作業」。
建立使用者叢集需要 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 的基本安裝作業。您也可以選擇部署應用程式,查看安裝作業的實際運作情形。