使用 Google Cloud 控制台為 Google Distributed Cloud 軟體建立管理員叢集,僅限 VMware 使用圖形使用者介面取得結構化指引。您也可以使用 gkectl 或 Google Cloud console 建立管理員叢集。
事前準備
請確認您已設定管理員工作站,並能登入,如「建立管理員工作站」一文所述。
請確認服務帳戶的 JSON 金鑰檔案位於管理工作站。
查看 IP 位址規劃文件。確認您有足夠的 IP 位址,可供三個控制層節點和一個控制層 VIP 使用。如果您打算建立任何kubeception 使用者叢集,則必須為這些使用者叢集的控制層節點預留充足的 IP 位址。
請參閱負載平衡總覽,重新考慮要使用的負載平衡器類型。如果是手動負載平衡器,您必須先設定負載平衡器,才能建立管理員叢集。
如果您使用
gkectl建立管理員叢集,請決定要為 Google Distributed Cloud 元件使用公開或私有登錄檔。如要瞭解如何使用私密 Docker 登錄檔,請參閱privateRegistry。Terraform 和 Google Cloud 控制台都不支援使用私人 Docker 登錄檔做為系統元件。決定要在管理員叢集節點上執行的作業系統類型。
如果貴機構規定輸出流量必須通過 Proxy 伺服器,請務必將必要 API 和 Artifact Registry 位址加入許可清單。
在 1.29 以上版本中,預設會啟用伺服器端預檢。伺服器端預檢需要額外的防火牆規則。在「管理員叢集的防火牆規則」中,搜尋「Preflight checks」,並確認已設定所有必要的防火牆規則。伺服器端前置檢查會在啟動叢集上執行,而不是在管理員工作站本機執行。
程序總覽
建立管理員叢集前,您需要在管理工作站上執行 gkectl register bootstrap 指令。這個指令會在管理員工作站上部署 Docker 中的 Kubernetes (kind) 叢集。這個啟動叢集會託管建立管理員叢集所需的 Kubernetes 控制器。建立管理員叢集時,啟動叢集上的控制器會佈建節點、執行預檢,並將管理員叢集註冊至機群。管理員叢集建立完成後,啟動叢集就會自動刪除。
使用控制台建立管理員叢集的大致步驟如下:
在控制台中,您會輸入
gkectl register bootstrap需要的資訊。控制台會顯示gkectl register bootstrap指令,以及您輸入的資訊。顯示的指令也包含路徑的旗標,您必須先指定路徑,才能執行指令。在管理員工作站上,您會執行
gkectl register bootstrap來建立啟動叢集。指令完成啟動叢集建立作業後,輸出內容會通知您完成管理員叢集設定。這個程序會持續執行,直到建立管理員叢集為止。返回控制台,完成建立叢集所需的資訊。叢集建立期間,
gkectl register bootstrap指令會輸出進度資訊,並在管理員工作站上寫入記錄。管理員叢集建立完畢後,系統會自動刪除啟動叢集。
開始設定叢集
前往控制台的「Create a cluster on VMware」(在 VMware 上建立叢集) 頁面。
選取要建立叢集的 Google Cloud 專案。
在下一個章節中建立啟動程序叢集時,所選專案 ID 會顯示在
--project-id旗標的gkectl register bootstrap指令中。確認已選取「建立管理員叢集」。
按一下「下一步:安裝啟動環境」。
安裝啟動環境
在本節中,您會輸入 gkectl register bootstrap
指令所需的資訊。在 UI 欄位中輸入值時,控制台會將值複製到 gkectl register bootstrap 指令的對應旗標,並顯示在頁面底部的「Bootstrap environment from admin workstation」(管理工作站的啟動程序環境) 區段。
啟動環境基本資訊
輸入管理員叢集的名稱。控制台會使用叢集名稱做為頁面底部顯示的
gkectl register bootstrap指令中--target-cluster-name標記的值。名稱長度上限為 20 個字元。在「API Location」(API 位置)Google Cloud 欄位中,從清單中選取 Google Cloud 區域。這項設定會指定下列 API 和服務的執行區域:
- GKE On-Prem API (
gkeonprem.googleapis.com) - 車隊服務 (
gkehub.googleapis.com) - 連結服務 (
gkeconnect.googleapis.com)
這項設定也會控管下列項目的儲存區域:
- GKE On-Prem API 管理叢集生命週期所需的叢集中繼資料
- 系統元件的 Cloud Logging 和 Cloud Monitoring 資料
- Cloud 稽核記錄建立的管理員稽核記錄
「Google Cloud API Location」欄位對應於
gkectl register bootstrap指令中的--location旗標。- GKE On-Prem API (
在「管理員叢集版本」欄位中,輸入要用於建立叢集的版本。您在此選取的版本必須與
gkectl register bootstrap指令中--bundle-path旗標指定的套件版本相符。
vCenter 設定
如果您使用 gkeadm 建立管理工作站,請開啟管理工作站設定檔,以便將 vCenter 區段中的值複製到控制台的欄位。請注意,產生的管理員叢集設定檔也包含這項資訊。
本節中的大部分欄位都無法變更。如要瞭解欄位是否可變動,請參閱管理員叢集設定檔參考資料中的vCenter部分。
在「Address」(地址) 欄位中,輸入 vCenter Server 位址。
管理員工作站設定檔:使用
vCenter.credentials.address欄位中的值。「地址」欄位對應於
gkectl register bootstrap指令中的--vcenter-address旗標。
在「Datacenter」(資料中心) 欄位中,輸入 vCenter 資料中心的名稱。
管理員工作站設定檔:使用
vCenter.datacenter欄位中的值。「資料中心」欄位對應於
gkectl register bootstrap指令中的--vcenter-datacenter標記。
在「叢集名稱」欄位中,輸入 vCenter 叢集的名稱。
管理員工作站設定檔:使用
vCenter.cluster欄位中的值。「叢集名稱」欄位對應於
gkectl register bootstrap指令中的--vcenter-cluster標記。
在「Resource pool」(資源集區) 欄位中,輸入 vCenter 資源集區的名稱或路徑。
管理員工作站設定檔:使用
vCenter.resourcePool欄位中的值。「資源集區」欄位對應於
gkectl register bootstrap指令中的--vcenter-resource-pool旗標。
輸入下列任一選項,設定儲存空間選項:
「資料儲存庫」欄位:輸入 vCenter 資料儲存庫的名稱。您指定的值必須是名稱,而非路徑。如要輸入路徑,請在「Folder」(資料夾) 欄位中輸入。
管理員工作站設定檔:使用
vCenter.datastore欄位中的值。「Datastore」欄位對應於
gkectl register bootstrap指令中的--vcenter-datastore旗標。
「儲存空間政策名稱」欄位:輸入叢集節點的VM 儲存空間政策名稱。詳情請參閱「設定儲存空間政策」。
管理員工作站設定檔:使用
vCenter.storagePolicyName欄位中的值。「儲存空間政策名稱」欄位對應於
gkectl register bootstrap指令中的--vcenter-storage-policy標記。
您必須在「Datastore」(資料存放區) 欄位或「Storage Policy Name」(儲存空間政策名稱) 欄位中輸入值,但不能同時輸入。
(選用) 在「Folder」(資料夾) 欄位中,輸入要存放叢集 VM 的 vCenter 資料夾名稱。
管理員工作站設定檔:使用
vCenter.folder欄位中的值。「資料夾」欄位對應於
gkectl register bootstrap指令中的--vcenter-folder旗標。
在「Network」(網路) 欄位中,輸入 vCenter 網路的名稱。
管理員工作站設定檔:使用
vCenter.network欄位中的值。「網路」欄位對應於
gkectl register bootstrap指令中的--vcenter-network旗標。
在「CA certificate path」欄位中,輸入 vCenter Server 的根 CA 憑證路徑。
如果您使用
gkeadm建立管理員工作站,gkeadm會將您在本機的管理員工作站上擁有的 CA 憑證檔案複製到管理員工作站。「CA 憑證路徑」欄位對應於
gkectl register bootstrap指令中的--vcenter-ca-cert-path。
取得 CA 憑證
建立啟動程序叢集後,您需要在「叢集基本資訊」頁面的「CA 憑證資料」欄位中,提供 PEM 格式的 vCenter CA 憑證。執行下列指令來顯示憑證:
cat CA_CERT_PATH
將 CA_CERT_PATH 替換為 vCenter Server 根層級 CA 憑證的路徑。如果您在本機執行這項指令,請使用管理員工作站設定檔中 vCenter.caCertPath 的路徑。
將整個憑證複製到文字編輯器,以便在建立啟動叢集後,貼到「叢集基本資訊」頁面的「CA 憑證資料」欄位。
從管理員工作站啟動環境
執行 gkectl register bootstrap 指令時,系統會提示您輸入 vCenter 帳戶的使用者名稱和密碼。請確認您已備妥憑證。如果您使用 gkeadm 建立管理員工作站,使用者名稱和密碼會位於 credential.yaml 檔案中。
捲動至「從管理員工作站啟動環境」部分,顯示
gkectl register bootstrap指令。前往管理員工作站建立啟動叢集時,請勿關閉這個頁面。
將
gkectl register bootstrap指令複製並貼到文字編輯器,以便為下列標記指定值:./gkectl register bootstrap \ ... --bundle-path=BUNDLE_PATH \ ... --component-access-service-account-key-path=COMPONENT_ACCESS_SA_PATH \ --register-service-account-key-path=CONNECT_REGISTER_SA_PATH \ --stackdriver-service-account-key-path=LOG_MON_SA_PATH \ --cloud-audit-logging-service-account-key-path=CLOUD_AUDIT_SA_PATH \ --admin-kubeconfig-out=KUBECONFIG_NAME將下列項目替換為管理員工作站路徑:
BUNDLE_PATH:套件檔案的路徑。如果您使用gkeadm建立管理員工作站,套裝組合檔案會位於/var/lib/gke/bundles/中。檔案名稱取決於 Google Distributed Cloud 版本,例如gke-onprem-vsphere-1.31.0-gke.889-full.tgz。COMPONENT_ACCESS_SA_PATH:元件存取服務帳戶的金鑰檔案路徑。CONNECT_REGISTER_SA_PATH:connect-register 服務帳戶的金鑰檔案路徑。LOG_MON_SA_PATH:記錄監控服務帳戶的金鑰檔案路徑。CLOUD_AUDIT_SA_PATH:稽核記錄服務帳戶的路徑。如果您未建立稽核記錄服務帳戶,請指定記錄監控服務帳戶的金鑰檔案路徑。KUBECONFIG_NAME:gkectl register bootstrap指令建立的 kubeconfig 檔案名稱。如果未指定這個旗標,指令會在目前的工作目錄中建立名為kubeconfig的檔案。如果已有名為kubeconfig的檔案,這項指令會覆寫該檔案。
此外,如果您使用
gkeadm建立管理員工作站,gkectl會下載至/usr/bin/目錄。在本例中,請從指令開頭移除./,因為gkectl不在目前的工作目錄中。使用 SSH 連線至管理工作站。
複製指令並貼到管理工作站的終端機視窗。
出現提示時,輸入 (或複製並貼上) vCenter 使用者名稱。使用者名稱不會回顯到畫面上。
出現提示時,請輸入 (或複製並貼上) vCenter 密碼。密碼不會回顯到畫面上。
這項指令會執行多項驗證。gkectl 成功建立啟動程序叢集後,畫面會顯示類似以下的輸出內容,為方便閱讀,部分內容已遭截斷:
Running workstation validations
- Validation Category: Workstation
- [SUCCESS] Workstation OS
- [SUCCESS] Workstation Hardware
- [SUCCESS] Workstation Package
- [SUCCESS] Workstation NTP
- [SUCCESS] Workstation Docker
...
All validation results were SUCCESS.
Unpacking GKE on-prem bundle: /var/lib/gke/bundles/gke-onprem-vsphere-1.31.0-gke.889-full.tgz
...
Successfully created and registered the bootstrap cluster
...
Waiting for preflight checks to run or OnPremAdminCluster to be applied...... -
這個程序會持續執行,直到建立管理員叢集為止。
如果在建立管理員叢集前結束 gkectl register bootstrap 指令,管理員叢集建立作業就會失敗,您必須使用下列指令刪除啟動叢集:
gkectl delete bootstrap \
--target-cluster-name=ADMIN_CLUSTER_NAME \
--project-id=PROJECT_ID \
--location=REGION \
--register-service-account-key-path=CONNECT_REGISTER_SA_PATH
完成管理員叢集設定
返回控制台並執行下列步驟:
在「Install bootstrap environment」(安裝啟動程序環境) 頁面上,按一下「Check Connection」(檢查連線)。
成功後,主控台會顯示「Connection established」(已建立連線) 。
必須先建立與啟動程序叢集的連線,才能繼續。如果連線未建立,請檢查您為
gkectl register bootstrap指令指定的引數:請確認
--target-cluster-name的值與「Bootstrap environment basics」(啟動環境基本資訊) 部分顯示的「Admin cluster name」(管理員叢集名稱) 相符。確認
--project-id的值與您在控制台中選取的專案 ID 相符。
如要變更啟動程序叢集名稱、專案 ID 或其他標記值,請按照下列步驟操作:
- 輸入
Ctrl-C即可退出gkectl register bootstrap。 刪除啟動叢集:
gkectl delete bootstrap \ --target-cluster-name=ADMIN_CLUSTER_NAME \ --project-id=PROJECT_ID \ --location=REGION \ --register-service-account-key-path=CONNECT_REGISTER_SA_PATH
重新執行
gkectl register bootstrap指令。
點選「下一步:叢集基本資訊」,開始設定管理員叢集。
叢集基本資訊
在「CA certificate data」(CA 憑證資料) 欄位中,複製並貼上 PEM 格式的完整 vCenter CA 憑證,如先前「取得 CA 憑證」一節所述。
在「授權」部分,輸入要授予 Kubernetes 唯讀
clusterrole/view角色的使用者電子郵件地址。請注意,系統會自動新增您的電子郵件地址。套用的角色式存取控管 (RBAC) 政策,可讓使用者透過連線閘道執行唯讀指令。按一下「Next Control Plane」(下一個控制平面)。
控制層
查看「控制層」部分的預設設定,並視需要變更。
在「控制層節點 IP」部分,在下列欄位中輸入 IP 位址:
閘道:叢集節點所在子網路的預設閘道 IP 位址。
網路遮罩:叢集節點所在子網路的網路遮罩。
IP 位址:輸入 IP 位址,並視需要輸入三個控制層節點的主機名稱。
點選「下一步:網路」。
網路
在本節中,您將指定建立管理員叢集所需的網路資訊。
在「服務和 Pod CIDR」部分,您可以接受 Kubernetes 服務和 Pod IP 位址範圍的預設值,也可以輸入不同的 CIDR 位址範圍。
服務 CIDR:最小可能範圍:
/24。最大可能範圍:/12。Pod CIDR:最小可能範圍:
/18。最大可能範圍: /8`。
在「主機設定」部分中,指定 NTP 伺服器、DNS 伺服器,以及叢集節點 VM 使用的 DNS 搜尋網域 (選用)。叢集建立後即無法修改這些值。
按一下「下一步:負載平衡器」。
負載平衡器
在本節中,您將選取要使用的負載平衡器類型。詳情請參閱負載平衡總覽。
在「負載平衡器類型」清單中,選取負載平衡器:
隨附於 MetalLB:MetalLB 負載平衡器隨附於,且所需設定比手動負載平衡少。MetalLB 元件會在叢集節點上執行,因此您不必為負載平衡器建立個別的 VM。
手動:只要在建立叢集前設定負載平衡器,即可使用任何負載平衡器。使用手動設定的負載平衡器時,您必須設定虛擬 IP (VIP)、節點位址和 nodePort 值之間的對應。
在「控制層 VIP」欄位中,輸入 Kubernetes API 伺服器接收流量時要使用的 VIP。
按一下「驗證並建立」。
主控台會顯示狀態訊息,同時驗證設定並在資料中心建立叢集。
如果設定有問題,控制台會顯示錯誤訊息,您應該能據此修正設定問題,然後再次嘗試建立叢集。
管理員工作站會輸出叢集建立程序的詳細資料。如果預檢通過,您會看到類似以下的畫面:
[2023-03-22 23:12:47+0000] Waiting for cluster kubeconfig to become ready OK [2023-03-22 23:15:47+0000] Writing kubeconfig file [2023-03-22 23:15:47+0000] kubeconfig of cluster being created is present at gkectl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig [2023-03-22 23:15:47+0000] Please restrict access to this file as it contains authentication credentials of your cluster. [2023-03-22 23:15:47+0000] Waiting for cluster to become ready OK [2023-03-22 23:20:17+0000] Please run [2023-03-22 23:20:17+0000] kubectl --kubeconfig gkectl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig get nodes [2023-03-22 23:20:17+0000] to get cluster nodes status. [2023-03-22 23:20:17+0000] Waiting for node pools to become ready OK [2023-03-22 23:20:37+0000] Waiting for metrics to become ready in GCP OK [2023-03-22 23:25:38+0000] Waiting for cluster API provider to install in the created admin cluster OK [2023-03-22 23:25:48+0000] Moving admin cluster resources to the created admin cluster [2023-03-22 23:25:51+0000] Waiting for node update jobs to finish OK [2023-03-22 23:27:41+0000] Flushing logs... OK [2023-03-22 23:27:41+0000] Deleting membership... OK [2023-03-22 23:27:42+0000] Deleting bootstrap cluster.
連線至管理員叢集
gkectl register bootstrap 指令會在管理員工作站上建立管理員叢集的 kubeconfig 檔案。如果您在執行 gkectl register bootstrap 時未指定 --admin-kubeconfig-out 旗標,指令會在您執行指令的目錄中,建立名為 kubeconfig 的 kubeconfig 檔案。
您必須限制這個 kubeconfig 的存取權,因為其中包含叢集的驗證憑證。
此外,您也可以透過連線閘道執行唯讀 kubectl 指令。
在安裝 gcloud CLI 的電腦上執行下列指令,取得可透過連線閘道存取叢集的
kubeconfig項目。gcloud container fleet memberships get-credentials ADMIN_CLUSTER_NAME \ --project=PROJECT_ID輸出結果會與下列內容相似:
Starting to build Gateway kubeconfig... Current project_id: PROJECT_ID A new kubeconfig entry "connectgateway_PROJECT_ID_global_ADMIN_CLUSTER_NAME" has been generated and set as the current context.您現在可以透過連線閘道執行唯讀
kubectl指令,例如:kubectl get pods -A如需管理員叢集的完整管理員權限,請參閱「設定連線閘道」。