本頁說明如何建立及管理 Google Distributed Cloud 連線叢集資源。如要進一步瞭解 Distributed Cloud connected 叢集,請參閱「Distributed Cloud connected 的運作方式」。
必要條件
如要建立 Distributed Cloud 連線叢集,請先在目標 Google Cloud 專案中啟用必要 API。如要執行這項操作,您必須在 Google Cloud 專案中具備下列其中一個角色:
- 擁有者 (
roles/owner) - 編輯者 (
roles/editor) - 服務使用情形管理員 (
roles/serviceusage.serviceUsageAdmin)
如要進一步瞭解這些角色,請參閱「基本角色」。如要瞭解如何授予角色,請參閱「授予單一角色」。
如要建立 Distributed Cloud 連線叢集,請啟用下列 API:
anthos.googleapis.comanthosaudit.googleapis.comanthosgke.googleapis.comcloudresourcemanager.googleapis.comconnectgateway.googleapis.comcontainer.googleapis.comedgecontainer.googleapis.comgkeconnect.googleapis.comgkehub.googleapis.comgkeonprem.googleapis.comiam.googleapis.comkubernetesmetadata.googleapis.comlogging.googleapis.commonitoring.googleapis.comopsconfigmonitoring.googleapis.comserviceusage.googleapis.comstackdriver.googleapis.comstorage.googleapis.comsts.googleapis.com
如要瞭解如何啟用 API,請參閱「啟用服務」。
建立 Distributed Cloud 連線叢集時,請遵守下列規則:
- 您必須在自己的專案中建立 Distributed Cloud connected 叢集。 Google Cloud Distributed Cloud 連線叢集無法與任何其他類型的叢集 (包括非 Distributed Cloud 連線叢集) 共存在同一個 Google Cloud 專案 中。在同一個 Google Cloud 專案中,將 Distributed Cloud 連線叢集與任何其他類型的叢集混合使用,可能會導致資料遺失。
- 如果您在 Distributed Cloud 連結叢集之間重新指派節點,該節點會清除所有資料並重設為預設設定。
- 根據預設,本機控制層工作負載會以高可用性模式執行,並在 Distributed Cloud 自動選取的三個節點中,跨越三個副本。除非叢集中的節點少於三個,或您特別將叢集設定為使用一個節點執行本機控制層工作負載,否則就是如此。您也可以使用
--control-plane-machine-filter標記,為高可用性模式指定三個節點。系統不支援其他節點組合。 - 執行本機控制層工作負載的節點,也會執行應用程式工作負載。
- 您可以在區域網路存取本機控制層端點的 IP 位址。請務必確保本機網路的安全防護設定可防止外部存取這些 IP 位址。
推薦主題
建立叢集前,請先熟悉下列主題:
建立叢集
如要建立 Distributed Cloud 連線叢集,請完成本節中的步驟。建立叢集是在 Distributed Cloud Connected 上部署工作負載的必要步驟之一。
如要完成這項工作,您必須在 Google Cloud 專案中擁有Edge Container 管理員角色roles/edgecontainer.admin。
控制台
前往 Google Cloud 控制台的 Kubernetes「Clusters」(叢集) 頁面。
點選「建立」。
在「建立叢集」頁面中,按一下「內部部署」分頁標籤。
按一下「Distributed Cloud Edge」選項旁邊的「設定」。
在「叢集基本資訊」頁面中,提供下列資訊:
- 名稱:用於識別這個叢集的不重複名稱。這個名稱必須符合 RFC 1213 規定,且只能包含小寫英數字元和連字號 (
-),開頭和結尾須為英數字元。 - 位置:您要在其中建立這個叢集的 Google Cloud 區域。
- 每個節點的預設 Pod 數上限:要在這個叢集中的每個節點上執行的 Kubernetes Pod 數量上限。
- 標籤:按一下「新增標籤」,即可為這個叢集新增一或多個標籤。
- 名稱:用於識別這個叢集的不重複名稱。這個名稱必須符合 RFC 1213 規定,且只能包含小寫英數字元和連字號 (
按一下左側導覽列中的「控制平面」。
在「控制平面」頁面中,提供下列資訊:
- 選取「本機」做為控制層位置。
- 選取目標 Distributed Cloud connected 專案。
- 選取目標 Distributed Cloud connected 可用區。
- (選用) 指定篩選條件,選取要新增至叢集的特定 Distributed Cloud 機器。
- 指定是否要將其設為高可用性叢集。
- 指定是否要允許共用部署工作負載。這樣一來,工作負載就能在執行叢集控制層的節點上執行。
按一下左側導覽區中的「網路」。
在「網路」頁面中,提供下列資訊:
- 叢集預設 Pod 位址範圍:要在這個叢集上執行的 Kubernetes Pod 的所需 IPv4 CIDR 區塊。
- 服務位址範圍:Kubernetes 服務的所需 IPv4 CIDR 區塊,這些服務會在這個叢集上執行。
詳情請參閱「Distributed Cloud Pod and Service network address allocation」(Distributed Cloud Pod 和服務網路位址分配)。
按一下左側導覽區中的「授權」。
在「授權」頁面中,提供目標 Google Cloud 專案中獲授權可修改叢集資源的使用者帳戶名稱。
透過下列其中一種做法,將節點集區指派給叢集:
- 如要將現有節點集區指派給這個叢集,請在左側導覽的「節點集區」部分中選取現有節點集區,並確認「節點集區詳細資料」頁面中的節點集區設定正確無誤。
- 如要建立新的節點集區並指派給這個叢集,請按一下「新增節點集區」,並在「節點集區詳細資料」頁面中提供下列資訊:
- 節點集區名稱:用於識別這個節點集區的不重複名稱。
- 節點集區標籤:按一下「新增標籤」,為這個節點集區新增一或多個標籤。
- 工作站節點偏好設定:選取要指派給這個節點集區的 Distributed Cloud 連線節點。
如要建立 Distributed Cloud 連線叢集,請按一下「Create」(建立)。
gcloud
使用 gcloud edge-cloud container clusters create 指令:
gcloud edge-cloud container clusters create CLUSTER_ID \
--project=PROJECT_ID \
--location=REGION \
--fleet-project=FLEET_PROJECT_ID \
--cluster-ipv4-cidr=CLUSTER_IPV4_CIDR_BLOCK \
--services-ipv4-cidr=SERVICE_IPV4_CIDR_BLOCK \
--default-max-pods-per-node=MAX_PODS_PER_NODE \
--release-channel RELEASE_CHANNEL \
--control-plane-node-storage-schema CONTROL_PLANE_STORAGE_SCHEMA \
--control-plane-kms-key=CONTROL_PLANE_KMS_KEY \
--control-plane-node-location=CONTROL_PLANE_LOCATION \
--control-plane-node-count=CONTROL_PLANE_NODE_COUNT \
--control-plane-machine-filter=CONTROL_PLANE_NODE_FILTER \
--control-plane-shared-deployment-policy=CONTROL_PLANE_NODE_SHARING \
--external-lb-address-pools=IPV4_DATA_PLANE_ADDRESSES \
--version SOFTWARE_VERSION \
--offline-reboot-ttl REBOOT_TIMEOUT \
--default-container-runtime RUNTIME_CLASS \
--enable-google-group-authentication GROUP_AUTHENTICATION
更改下列內容:
CLUSTER_ID:用於識別這個叢集的專屬名稱。 這個名稱必須符合 RFC 1213 規範,且只能包含小寫英數字元和連字號 (-),開頭和結尾須為英數字元。PROJECT_ID:目標 Google Cloud 專案的 ID。REGION:叢集建立所在的 Google Cloud 區域。FLEET_PROJECT_ID:叢集註冊的 Fleet 主機專案 ID。如果省略這個旗標,系統會將 Distributed Cloud 連線叢集專案做為 Fleet 主專案。CLUSTER_IPV4_CIDR_BLOCK:Kubernetes Pod 的 IPv4 CIDR 區塊,這些 Pod 會在這個叢集上執行。SERVICE_IPV4_CIDR_BLOCK:Kubernetes 服務的 IPv4 CIDR 區塊,這些服務會在這個叢集上執行。MAX_PODS_PER_NODE(選用):這個叢集中每個節點可執行的 Kubernetes Pod 數量上限。如果省略此屬性,系統會預設為110。 這個數字可能會受到 Pod 的 CIDR 區塊大小限制。RELEASE_CHANNEL:(選用) 指定叢集要執行的 Distributed Cloud 軟體版本發布管道。有效值為REGULAR(啟用自動叢集升級) 和NONE(停用自動叢集升級)。如果省略此屬性,系統會預設為REGULAR。CONTROL_PLANE_STORAGE_SCHEMA(選用):指定這個叢集控制層節點的本機儲存空間結構定義。詳情請參閱「設定本機儲存空間結構定義」。CONTROL_PLANE_KMS_KEY(選用):您要用於這個叢集控制層節點的 Cloud KMS 金鑰完整路徑。例如:/projects/myProject/locations/us-west1-a/keyRings/myKeyRing/cryptoKeys/myGDCE-Key
只有在您已整合 Distributed Cloud 並連線至 Cloud Key Management Service 時,這個標記才適用,詳情請參閱「為本機儲存空間啟用客戶自行管理的加密金鑰 (CMEK) 支援」。
CONTROL_PLANE_LOCATION:指示 Distributed Cloud 在本機部署這個叢集的控制平面工作負載。此值是目標 Distributed Cloud connected 可用區的名稱。CONTROL_PLANE_NODE_COUNT(選用):指定要執行本機控制層工作負載的節點數量。有效值為3(高可用性) 和1(標準作業)。如果省略此屬性,系統會預設為3。CONTROL_PLANE_NODE_FILTER(選用):指定執行本機控制層工作負載的節點清單 (採用 regex 格式)。如果省略,Distributed Cloud 會隨機自動選取節點。CONTROL_PLANE_NODE_SHARING:(選用) 指定應用程式工作負載是否可在執行本機控制層工作負載的節點上執行。有效值為DISALLOWED和ALLOWED。如果省略此屬性,系統會預設為DISALLOWED。IPV4_DATA_PLANE_ADDRESSES:指定服務的 IPv4 位址、位址範圍或子網路,這些服務在叢集以存續模式執行時,會透過 Distributed Cloud 負載平衡器接收連入流量。接受以半形逗號分隔的清單,或 YAML/JSON 格式的設定檔。詳情請參閱負載平衡。SOFTWARE_VERSION:指定叢集要執行的 Distributed Cloud 連結軟體版本,格式為1.X.Y,其中X是次要版本,Y是修補程式版本,例如1.5.1。如果省略這項元素,系統會預設為伺服器預設軟體版本,通常是 Distributed Cloud Connected 的最新可用版本。如要取得可用於建立叢集的軟體版本 (包括伺服器預設版本),請參閱「取得叢集的可用軟體版本」。您必須將RELEASE_CHANNEL旗標設為NONE,才能指定叢集軟體版本。REBOOT_TIMEOUT:指定時間範圍 (以秒為單位),叢集節點可在叢集以存續模式執行時重新啟動,並重新加入叢集。如果省略,預設為0,重新啟動的節點必須重新建立與 Google Cloud 的連線,才能重新加入叢集。逾時值的下限為1800或 30 分鐘。您也可以使用 ISO 8601 格式表示這個值 (例如1dT1h2m3s)。注意:如果您指定重新啟動逾時時間範圍,即使您停用或刪除儲存空間金鑰,離線節點仍可在指定時間內重新啟動並重新加入叢集。逾時時間越長,風險就越高。
RUNTIME_CLASS:指定這個叢集中工作負載的預設執行階段類別。有效值為runc和gvisor。如果省略此屬性,系統會預設為runc。如要覆寫此設定,請在 Pod 設定中指定執行階段類別,詳情請參閱「設定 Pod 執行階段類別」。這項功能為預先發布版。指定
gvisor執行階段類別會將 Pod 切換至以 gVisor 為基礎的 Open Container Initiative (OCI) 安全執行階段。gVisor 是一種沙箱解決方案,可在工作負載及其主機之間導入嚴格的隔離機制。這是預覽層級的執行階段類別。GROUP_AUTHENTICATION:指定是否可透過 Google 群組而非個人帳戶進行驗證,以存取叢集。有效值為true和false。如果省略此屬性,系統會預設為false。
API
對 projects.locations.clusters 方法發出 POST 要求:
POST /v1/projects/PROJECT_ID/locations/REGION/clusters?clusterId=CLUSTER_ID&requestId=REQUEST_ID&fleetId=FLEET_PROJECT_ID
{
"labels": { LABELS,
},
"authorization": {
"adminUsers": {
"username": "USERNAME"
}
},
"fleet": {
"project": "FLEET_PROJECT_ID"
},
"networking": {
"clusterIpv4CidrBlocks": CLUSTER_IPV4_CIDR_BLOCK,
"servicesIpv4CidrBlocks": SERVICE_IPV4_CIDR_BLOCK,
},
"defaultMaxPodsPerNode": MAX_PODS_PER_NODE,
"releaseChannel": "RELEASE_CHANNEL",
"controlPlaneEncryption": {
"kmsKey": CONTROL_PLANE_KMS_KEY,
},
"controlPlane": {
"local": {
"nodeLocation": "CONTROL_PLANE_LOCATION",
"nodeCount": CONTROL_PLANE_NODE_COUNT,
"machineFilter": "CONTROL_PLANE_NODE_FILTER",
"sharedDeploymentPolicy": "CONTROL_PLANE_NODE_SHARING"
}
},
"externalLoadBalancerIpAddressPools": [
"IPV4_DATA_PLANE_ADDRESSES"
],
"targetVersion": "SOFTWARE_VERSION",
"offlineRebootTtl": "REBOOT_TIMEOUT",
"defaultContainerRuntime": "RUNTIME_CLASS",
"enableGoogleGroupAuthentication": "GROUP_AUTHENTICATION",
}
更改下列內容:
PROJECT_ID:目標 Google Cloud 專案的 ID。REGION:建立目標 Distributed Cloud connected 叢集的 Google Cloud 區域。CLUSTER_ID:用於識別這個叢集的專屬名稱。 這個名稱必須符合 RFC 1213 規範,且只能包含小寫英數字元和連字號 (-),開頭和結尾須為英數字元。REQUEST_ID:用於識別這項要求的專屬程式輔助 ID。FLEET_PROJECT_ID:叢集註冊的 Fleet 主機專案 ID。這可以是獨立專案,也可以是這個叢集所屬的 Distributed Cloud 連線專案 (PROJECT_ID)。您必須註冊機群。LABELS:要套用至這個叢集資源的標籤清單。USERNAME:有權修改叢集資源的目標 Google Cloud 專案中的使用者帳戶名稱。CLUSTER_IPV4_CIDR_BLOCK:Kubernetes Pod 的 IPv4 CIDR 區塊,這些 Pod 會在這個叢集上執行。SERVICE_IPV4_CIDR_BLOCK:Kubernetes 服務的 IPv4 CIDR 區塊,這些服務會在這個叢集上執行。MAX_PODS_PER_NODE:可在這個叢集每個節點上執行的 Kubernetes Pod 數量上限。如果省略此屬性,系統會預設為110。這個數字也可能受到 Pod 的 CIDR 區塊大小限制。RELEASE_CHANNEL:(選用) 指定叢集要執行的 Distributed Cloud 連結軟體版本發布管道。有效值為REGULAR(啟用自動叢集升級) 和NONE(停用自動叢集升級)。如果省略此屬性,系統會預設為REGULAR。CONTROL_PLANE_KMS_KEY(選用):您要用於這個叢集控制層節點的 Cloud KMS 金鑰完整路徑。例如:/projects/myProject/locations/us-west1-a/keyRings/myKeyRing/cryptoKeys/myGDCE-Key
只有在您已整合 Distributed Cloud connected 與 Cloud Key Management Service 時,這個參數才適用,如「為本機儲存空間啟用客戶自行管理的加密金鑰 (CMEK) 支援」一文所述。
CONTROL_PLANE_LOCATION:指示 Distributed Cloud 在本機部署這個叢集的控制平面工作負載。這個值是目標 Distributed Cloud 區域的名稱。CONTROL_PLANE_NODE_COUNT:指定要執行本機控制層工作負載的節點數量。有效值為3(高可用性) 和1(標準作業)。CONTROL_PLANE_NODE_FILTER(選用):指定執行本機控制層工作負載的節點清單 (採用 regex 格式)。如果省略,Distributed Cloud 會隨機自動選取節點。CONTROL_PLANE_NODE_SHARING:指定應用程式工作負載是否可在執行本機控制平面工作負載的節點上執行。有效值為DISALLOWED和ALLOWED。如果省略此屬性,系統會預設為DISALLOWED。IPV4_DATA_PLANE_ADDRESSES:指定服務的 IPv4 位址、位址範圍或子網路,這些服務在叢集以存續模式執行時,會透過 Distributed Cloud 負載平衡器接收連入流量。接受以半形逗號分隔的清單,或 YAML/JSON 格式的酬載。詳情請參閱負載平衡。SOFTWARE_VERSION:指定要讓這個叢集執行的 Distributed Cloud 軟體版本,格式為1.X.Y,其中X是次要版本,Y是修補程式版本,例如1.5.1。如果省略這項元素,系統會預設為伺服器預設軟體版本,通常是 Distributed Cloud Connected 的最新可用版本。如要取得可用於建立叢集的軟體版本 (包括伺服器預設版本),請參閱「取得叢集的可用軟體版本」。您必須將RELEASE_CHANNEL欄位設為NONE,才能指定叢集軟體版本。REBOOT_TIMEOUT:指定時間範圍 (以秒為單位),叢集節點可在叢集以存續模式執行時重新啟動,並重新加入叢集。如果省略,預設為0,重新啟動的節點必須重新連線至 Google Cloud ,才能重新加入叢集。注意:如果您指定重新啟動逾時時間範圍,即使您停用或刪除儲存空間金鑰,離線節點仍可在指定時間內重新啟動並重新加入叢集。
RUNTIME_CLASS:指定這個叢集中工作負載的預設執行階段類別。有效值為runc和gvisor。如果省略此屬性,系統會預設為runc。如要覆寫此設定,請在 Pod 設定中指定執行階段類別,詳情請參閱「設定 Pod 執行階段類別」。這項功能為預先發布版。指定
gvisor執行階段類別會將 Pod 切換至以 gVisor 為基礎的 Open Container Initiative (OCI) 安全執行階段。gVisor 是一種沙箱解決方案,可在工作負載及其主機之間導入嚴格的隔離機制。這是預覽層級的執行階段類別。GROUP_AUTHENTICATION:指定是否可透過 Google 群組而非個人帳戶進行驗證,以存取叢集。有效值為true和false。如果省略此屬性,系統會預設為false。
列出區域中的叢集
如要列出在Google Cloud 區域中佈建的 Distributed Cloud 連線叢集,請完成本節中的步驟。
如要完成這項工作,您必須在 Google Cloud 專案中擁有Edge Container 檢視者角色roles/edgecontainer.viewer。
控制台
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
檢查叢集清單。
gcloud
使用 gcloud edge-cloud container clusters list 指令:
gcloud edge-cloud container clusters list \
--project=PROJECT_ID \
--location=REGION
更改下列內容:
PROJECT_ID:目標 Google Cloud 專案的 ID。REGION:您建立 Distributed Cloud 連結網路叢集的 Google Cloud 區域。
API
對 projects.locations.clusters.list 方法發出 GET 要求:
GET /v1/projects/PROJECT_ID/locations/REGION/clusters?clusterId=CLUSTER_ID&filter=FILTER&pageSize=PAGE_SIZE&orderBy=SORT_BY&pageToken=PAGE_TOKEN
更改下列內容:
PROJECT_ID:目標 Google Cloud 專案的 ID。REGION:建立目標 Distributed Cloud 叢集的 Google Cloud 區域。CLUSTER_ID:目標叢集的名稱。FILTER:限制傳回結果為特定值的運算式。PAGE_SIZE:每頁要傳回的結果數。SORT_BY:以半形逗號分隔的欄位名稱清單,做為傳回結果的排序依據。預設排序順序為遞增;如要遞減排序,請在所需欄位前面加上~。PAGE_TOKEN:在回應的nextPageToken欄位中,對最後一個清單要求的回應中收到的權杖。傳送這個符記即可接收結果頁面。
取得叢集相關資訊
如要取得 Distributed Cloud connected 叢集的相關資訊,請完成本節中的步驟。
如要完成這項工作,您必須在 Google Cloud 專案中擁有Edge Container 檢視者角色roles/edgecontainer.viewer。
控制台
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
選取需要的叢集。
右側窗格會顯示詳細叢集資訊的下拉式面板。
gcloud
使用 gcloud edge-cloud container clusters describe 指令:
gcloud edge-cloud container clusters describe CLUSTER_ID \
--project=PROJECT_ID \
--location=REGION
更改下列內容:
CLUSTER_ID:目標叢集的名稱。PROJECT_ID:目標 Google Cloud 專案的 ID。REGION:您建立 Distributed Cloud 連結網路區域的 Google Cloud 區域。
API
對 projects.locations.clusters.get 方法發出 GET 要求:
GET /v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID
更改下列內容:
PROJECT_ID:目標 Google Cloud 專案的 ID。REGION:建立目標 Distributed Cloud connected 叢集的 Google Cloud 區域。CLUSTER_ID:目標叢集的名稱。
取得叢集可用的軟體版本
如要瞭解 Distributed Cloud connected 可用區有哪些 Distributed Cloud connected 軟體版本可供建立叢集,請完成本節中的步驟。
如要完成這項工作,您必須在 Google Cloud 專案中擁有Edge Container 檢視者角色roles/edgecontainer.viewer。
gcloud
使用 gcloud edge-cloud container get-server-config 指令:
gcloud edge-cloud container get-server-config --location=REGION
將 REGION 替換為您建立 Distributed Cloud connected 可用區的 Google Cloud 區域。
API
對 projects.locations.serverConfig 方法發出 GET 要求:
GET /v1/projects/PROJECT_ID/locations/REGION/serverConfig
更改下列內容:
PROJECT_ID:目標 Google Cloud 專案的 ID。REGION:建立目標 Distributed Cloud connected 叢集的 Google Cloud 區域。
升級叢集的軟體版本
如要升級 Distributed Cloud connected 叢集的軟體版本,請完成本節中的步驟。
指定軟體升級階段大小
完成本節中的步驟前,請參閱軟體更新錯開時間。
如要指定可同時進行軟體升級的節點數量,請使用下列指令:
gcloud edge-cloud container clusters update CLUSTER_ID \
--project=PROJECT_ID \
--location=REGION \
--max-unavailable-worker-nodes=MAX_UNAVAILABLE_NODES
更改下列內容:
CLUSTER_ID:目標叢集的名稱。PROJECT_ID:目標 Google Cloud 專案的 ID。REGION:已建立目標 Distributed Cloud connected 叢集的 Google Cloud 區域。MAX_UNAVAILABLE_NODES:指定可同時停機進行軟體升級的 worker 節點數量上限。
如要將這個值重設為預設值,請使用下列指令:
gcloud edge-cloud container clusters update CLUSTER_ID \
--project=PROJECT_ID \
--location=REGION \
--clear-max-unavailable-worker-nodes
更改下列內容:
CLUSTER_ID:目標叢集的名稱。PROJECT_ID:目標 Google Cloud 專案的 ID。REGION:已建立目標 Distributed Cloud connected 叢集的 Google Cloud 區域。
將叢集升級至新版 Distributed Cloud 連線軟體
如要完成這項工作,您必須在 Google Cloud 專案中擁有Edge Container 管理員角色roles/edgecontainer.admin。
gcloud
使用 gcloud edge-cloud container clusters upgrade 指令:
gcloud edge-cloud container clusters upgrade CLUSTER_ID \ --location=REGION \ --project=PROJECT_ID \ --schedule=UPGRADE_SCHEDULE \ --version=SOFTWARE_VERSION
更改下列內容:
CLUSTER_ID:目標叢集的名稱。REGION:建立目標 Distributed Cloud 叢集的 Google Cloud 區域。PROJECT_ID:目標 Google Cloud 專案的 ID。UPGRADE_SCHEDULE:指定觸發軟體升級的時間。唯一有效值為IMMEDIATELY。SOFTWARE_VERSION:指定要讓這個叢集執行的 Distributed Cloud 軟體版本,格式為1.X.Y,其中X是次要版本,Y是修補程式版本,例如1.5.1。如要取得可用於建立叢集的軟體版本 (包括伺服器預設版本),請參閱取得叢集的可用軟體版本。
API
對 projects.locations.clusters.upgrade 方法發出 POST 要求:
POST /v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:upgrade?requestId=REQUEST_ID
{
"name": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID",
"targetVersion": "SOFTWARE_VERSION",
"schedule": "UPGRADE_SCHEDULE",
}
更改下列內容:
PROJECT_ID:目標 Google Cloud 專案的 ID。REGION:建立目標 Distributed Cloud connected 叢集的 Google Cloud 區域。CLUSTER_ID:目標叢集的名稱。REQUEST_ID:用於識別這項要求的專屬程式輔助 ID。UPGRADE_SCHEDULE:指定觸發軟體升級的時間。唯一有效值為IMMEDIATELY。SOFTWARE_VERSION:指定叢集要執行的 Distributed Cloud 連結軟體版本,格式為1.X.Y,其中X是次要版本,Y是修補程式版本,例如1.5.1。如要取得可用於建立叢集的軟體版本 (包括伺服器預設版本),請參閱取得叢集的可用軟體版本。
如果節點屬於叢集的節點集區,軟體升級作業通常需要約 2 小時才能完成。這個指令會傳回作業,方便您追蹤軟體升級進度。軟體升級期間,叢集狀態會設為 Reconciling,升級完成後則會返回 Running。叢集狀態為 Error 表示軟體升級失敗。
在這種情況下,請再次執行升級程序。如要瞭解如何檢查叢集狀態,請參閱「取得叢集相關資訊」。
修改叢集
如要修改 Distributed Cloud connected 叢集,請完成本節中的步驟。如果您要修改叢集的儲存空間加密設定,請勿在同一次更新作業中更新任何其他參數。
如要完成這項工作,您必須在 Google Cloud 專案中擁有Edge Container 管理員角色roles/edgecontainer.admin。
gcloud
使用 gcloud edge-cloud container clusters update 指令:
gcloud edge-cloud container clusters update CLUSTER_ID \
--project=PROJECT_ID \
--location=REGION \
--cluster-ipv4-cidr=CLUSTER_IPV4_CIDR_BLOCK \
--services-ipv4-cidr=SERVICES_IPV4_CIDR_BLOCK \
--default-max-pods-per-node=MAX_PODS_PER_NODE \
--release-channel=RELEASE_CHANNEL \
--control-plane-kms-key=CONTROL_PLANE_KMS_KEY \
--offline-reboot-ttl=REBOOT_TIMEOUT \
--max-unavailable-worker-nodes=MAX_UNAVAILABLE_NODES \
--default-container-runtime RUNTIME_CLASS \
--enable-google-group-authentication GROUP_AUTHENTICATION
更改下列內容:
CLUSTER_ID:目標叢集的名稱。PROJECT_ID:目標 Google Cloud 專案的 ID。REGION:建立目標 Distributed Cloud connected 叢集的 Google Cloud 區域。CLUSTER_IPV4_CIDR_BLOCK:Kubernetes Pod 在這個叢集上執行的IPv4 CIDR 區塊。SERVICE_IPV4_CIDR_BLOCK:Kubernetes 服務的所需 IPv4 CIDR 區塊,這些服務會在這個叢集上執行。MAX_PODS_PER_NODE:要在這個叢集每個節點上執行的 Kubernetes Pod 數量上限。RELEASE_CHANNEL(選用):指定要讓這個叢集執行的 Distributed Cloud connected 軟體版本發布管道。有效值為REGULAR(啟用自動叢集升級) 和NONE(停用自動叢集升級)。如果省略此屬性,系統會預設為REGULAR。CONTROL_PLANE_KMS_KEY(選用):您要用於這個叢集控制層節點的 Cloud KMS 金鑰完整路徑。例如:/projects/myProject/locations/us-west1-a/keyRings/myKeyRing/cryptoKeys/myGDCE-Key
只有在您已整合 Distributed Cloud connected 與 Cloud Key Management Service 時,這個參數才適用,如「為本機儲存空間啟用客戶自行管理的加密金鑰 (CMEK) 支援」一文所述。
REBOOT_TIMEOUT:指定時間範圍 (以秒為單位),叢集節點可在叢集以存續模式執行時重新啟動,並重新加入叢集。如果省略,則預設為0,這會禁止重新啟動的節點重新加入叢集,直到重新建立與 Google Cloud 的連線為止。注意:如果您指定重新啟動逾時時間範圍,即使您停用或刪除儲存空間金鑰,離線節點仍可在指定時間內重新啟動並重新加入叢集。
MAX_UNAVAILABLE_NODES(選用):指定可同時停機進行軟體升級的背景工作節點數量上限。如果省略此屬性,系統會預設為 X。 這項功能為預先發布版。RUNTIME_CLASS:指定這個叢集中工作負載的預設執行階段類別。有效值為runc和gvisor。如果省略此屬性,系統會預設為runc。如要覆寫此設定,請在 Pod 設定中指定執行階段類別,詳情請參閱「設定 Pod 執行階段類別」。如果您在 Pod 或叢集層級變更執行階段類別,必須重新啟動受影響的 Pod,變更才會生效。指定
gvisor執行階段類別會將 Pod 切換至以 gVisor 為基礎的 Open Container Initiative (OCI) 安全執行階段。gVisor 是一種沙箱解決方案,可在工作負載及其主機之間導入嚴格的隔離機制。GROUP_AUTHENTICATION:指定是否可透過 Google 群組而非個人帳戶進行驗證,以存取叢集。有效值為true和false。如果省略此屬性,系統會預設為false。
API
對 projects.locations.clusters.patch 方法發出 PATCH 要求:
PATCH /v1/projects/PROJECT_ID/locations/REGION/clusters/?updateMask=UPDATE_MASK&requestId=REQUEST_ID
{
"labels": { LABELS,
},
"networking": {
"ClusterIpv4CidrBlocks": CLUSTER_IPV4_CIDR_BLOCK,
"servicesIpv4CidrBlocks": SERVICE_IPV4_CIDR_BLOCK,
},
"authorization": {
"adminUsers": {
"username": USERNAME
}
},
"defaultMaxPodsPerNode": MAX_PODS_PER_NODE,
"releaseChannel": RELEASE_CHANNEL,
"controlPlaneEncryption": {
"kmsKey": CONTROL_PLANE_KMS_KEY,
},
"offlineRebootTtl": "REBOOT_TIMEOUT",
"defaultContainerRuntime": "RUNTIME_CLASS",
"enableGoogleGroupAuthentication": "GROUP_AUTHENTICATION",
}
更改下列內容:
PROJECT_ID:目標 Google Cloud 專案的 ID。REGION:建立目標 Distributed Cloud connected 叢集的 Google Cloud 區域。CLUSTER_ID:目標叢集的名稱。UPDATE_MASK:以半形逗號分隔的完整欄位名稱清單,用於以 FieldMask 格式更新這項要求中的欄位。REQUEST_ID:用於識別這項要求的專屬程式輔助 ID。CLUSTER_IPV4_CIDR_BLOCK:Kubernetes Pod 在這個叢集上執行的IPv4 CIDR 區塊。SERVICE_IPV4_CIDR_BLOCK:Kubernetes 服務的所需 IPv4 CIDR 區塊,這些服務會在這個叢集上執行。USERNAME:有權修改叢集資源的目標 Google Cloud 專案中的使用者帳戶名稱。MAX_PODS_PER_NODE:要在這個叢集每個節點上執行的 Kubernetes Pod 數量上限。RELEASE_CHANNEL:(選用) 指定叢集要執行的 Distributed Cloud 連結軟體版本發布管道。有效值為REGULAR(啟用自動叢集升級) 和NONE(停用自動叢集升級)。如果省略此屬性,系統會預設為REGULAR。CONTROL_PLANE_KMS_KEY(選用):您要用於這個叢集控制層節點的 Cloud KMS 金鑰完整路徑。例如:/projects/myProject/locations/us-west1-a/keyRings/myKeyRing/cryptoKeys/myGDCE-Key
只有在您已整合 Distributed Cloud connected 與 Cloud Key Management Service 時,這個參數才適用,如「為本機儲存空間啟用客戶自行管理的加密金鑰 (CMEK) 支援」一文所述。
REBOOT_TIMEOUT:(需要v1alpha1) 指定時間範圍 (以秒為單位),叢集節點可在重新啟動後重新加入叢集,而叢集則以存續模式執行。如果省略,預設為0,重新啟動的節點必須重新連線至 Google Cloud ,才能重新加入叢集。這項功能為預先發布版。注意:如果您指定重新啟動逾時時間範圍,即使您停用或刪除儲存空間金鑰,離線節點仍可在指定時間內重新啟動並重新加入叢集。
RUNTIME_CLASS:指定這個叢集中工作負載的預設執行階段類別。有效值為runc和gvisor。如果省略此屬性,系統會預設為runc。如要覆寫此設定,請在 Pod 設定中指定執行階段類別,詳情請參閱「設定 Pod 執行階段類別」。如果您在 Pod 或叢集層級變更執行階段類別,必須重新啟動受影響的 Pod,變更才會生效。指定
gvisor執行階段類別會將 Pod 切換至以 gVisor 為基礎的 Open Container Initiative (OCI) 安全執行階段。gVisor 是一種沙箱解決方案,可在工作負載及其主機之間導入嚴格的隔離機制。GROUP_AUTHENTICATION:指定是否可透過 Google 群組而非個人帳戶進行驗證,以存取叢集。有效值為true和false。如果省略此屬性,系統會預設為false。
取得叢集的憑證
如要取得 Distributed Cloud 連線叢集的憑證,請完成本節中的步驟。
如要完成這項工作,您必須在 Google Cloud 專案中擁有Edge Container 檢視者角色roles/edgecontainer.viewer。
gcloud
使用 gcloud edge-cloud container clusters get-credentials 指令:
gcloud edge-cloud container clusters get-credentials CLUSTER_ID \
--project=PROJECT_ID \
--location=REGION \
--offline-credential
更改下列內容:
CLUSTER_ID:目標叢集的名稱。PROJECT_ID:目標 Google Cloud 專案的 ID。REGION:建立目標 Distributed Cloud connected 叢集的 Google Cloud 區域。
如要產生叢集的離線憑證,請指定 --offline-credential 標記。
API
對 projects.locations.clusters 方法發出 GET 要求:
GET /v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID
更改下列內容:
PROJECT_ID:目標 Google Cloud 專案的 ID。REGION:建立目標 Distributed Cloud 區域的 Google Cloud 區域。CLUSTER_ID:目標叢集的名稱。
透過 Connect 閘道取得叢集憑證
Connect 閘道會做為 Proxy,供您使用 kubectl CLI 工具存取叢集。
透過 Connect 閘道要求叢集憑證的每個使用者帳戶,都必須具備 Connect 閘道說明文件「將 IAM 角色授予使用者」一節所述的權限。
透過 Connect 閘道要求憑證前,請先使用下列指令安裝 gke-gcloud-auth-plugin外掛程式:
gcloud components install gke-gcloud-auth-plugin
如要透過 Connect 閘道取得叢集憑證,請使用下列指令:
gcloud container hub memberships get-credentials CLUSTER_ID --project=PROJECT_ID
更改下列內容:
CLUSTER_ID:目標叢集的名稱。PROJECT_ID:目標 Google Cloud 專案的 ID。
為叢集設定維護期間
本節說明如何為 Distributed Cloud 連線叢集指定及清除下列類型的維護期間:
- 維護期間。指定時間範圍,讓 Google 可以在 Distributed Cloud 連線叢集上執行維護作業和軟體升級。
- 維護作業排除時段。指定時間範圍,Google 無法在這段期間對 Distributed Cloud 連結網路叢集執行維護作業或軟體升級。如要設定維護排除期間,請先設定維護期間。 維護作業排除時段的優先順序高於叢集的維護期間。
指定叢集的維護期間
如要為 Distributed Cloud connected 叢集指定維護時段,請完成本節中的步驟。如要進一步瞭解叢集維護作業,請參閱「瞭解軟體更新和維護期間」。
日期和時間格式請使用 RFC 5545。
如要完成這項工作,您必須在 Google Cloud 專案中擁有Edge Container 管理員角色roles/edgecontainer.admin。
控制台
如果使用 Google Cloud 控制台,只能在建立叢集時指定維護時間範圍。如要在現有叢集上指定維護時間範圍,必須使用 Google Cloud CLI 或 Distributed Cloud Edge Container API。
gcloud
使用 gcloud edge-cloud container clusters update 指令:
gcloud edge-cloud container clusters update CLUSTER_ID \
--project=PROJECT_ID \
--location=REGION \
--maintenance-window-start=MAINTENANCE_START \
--maintenance-window-end=MAINTENANCE_END \
--maintenance-window-recurrence=MAINTENANCE_FREQUENCY
更改下列內容:
CLUSTER_ID:目標叢集的名稱。PROJECT_ID:目標 Google Cloud 專案的 ID。REGION:建立目標 Distributed Cloud connected 叢集的 Google Cloud 區域。MAINTENANCE_START:維護期間的開始時間,格式為YYYY-MM-DDTHH:MM:SSZ。MAINTENANCE_END:維護期間的結束時間,格式為YYYY-MM-DDTHH:MM:SSZ。MAINTENANCE_FREQUENCY:維護時段的頻率,格式為FREQ=WEEKLY|DAILY;BYDAY=MO,TU,WE,TH,FR,SA,SU:BYDAY:以半形逗號分隔的日期清單,如果FREQ設為WEEKLY,維護作業可能會在這些日期進行。如果省略BYDAY參數,Google 會為你選擇星期幾。- 如果將
FREQ設為每天,維護期間會在指定時間每天發生。
API
對 projects.locations.clusters.update 方法發出 PATCH 要求:
PATCH /v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID?updateMask=maintenancePolicy&requestId=REQUEST_ID
{
"maintenance_policy": {
"window": {
"recurring_window": {
"window": {
"start_time": "MAINTENANCE_START",
"end_time": "MAINTENANCE_END"
},
"recurrence": "MAINTENANCE_FREQUENCY"
}
}
}
}
更改下列內容:
PROJECT_ID:目標 Google Cloud 專案的 ID。REGION:建立目標 Distributed Cloud connected 叢集的 Google Cloud 區域。CLUSTER_ID:目標叢集的名稱。UPDATE_MASK:以半形逗號分隔的完整欄位名稱清單,用於以 FieldMask 格式更新這項要求中的欄位。REQUEST_ID:用於識別這項要求的專屬程式輔助 ID。CLUSTER_ID:目標叢集的名稱。USERNAME:有權修改叢集資源的目標 Google Cloud 專案中的使用者帳戶名稱。MAINTENANCE_START:維護期間的開始時間,格式為YYYY-MM-DDTHH:MM:SSZ。MAINTENANCE_END:維護期間的結束時間,格式為YYYY-MM-DDTHH:MM:SSZ。MAINTENANCE_FREQUENCY:維護時段的頻率,格式為FREQ=WEEKLY|DAILY;BYDAY=MO,TU,WE,TH,FR,SA,SU:FREQ可以是DAILY或WEEKLY。BYDAY:以半形逗號分隔的日期清單,如果FREQ設為WEEKLY,維護作業可能會在這些日期進行。如果省略BYDAY參數,Google 會為你選擇星期幾。- 如果將
FREQ設為每天,維護期間會在指定時間每天發生。
詳情請參閱「資源:叢集」。
清除叢集的維護期間
如要清除 Distributed Cloud connected 叢集的維護時段,請完成本節中的步驟。清除叢集的維護期間時,也會清除該叢集的所有相應維護排除期間。如要進一步瞭解叢集維護作業,請參閱「瞭解軟體更新和維護期間」。
如要完成這項工作,您必須在 Google Cloud 專案中擁有Edge Container 管理員角色roles/edgecontainer.admin。
gcloud
使用 gcloud edge-cloud container clusters update 指令:
gcloud edge-cloud container clusters update CLUSTER_ID \
--project=PROJECT_ID \
--location=REGION \
--clear-maintenance-window
更改下列內容:
CLUSTER_ID:目標叢集的名稱。PROJECT_ID:目標 Google Cloud 專案的 ID。REGION:建立目標 Distributed Cloud 叢集的 Google Cloud 區域。
API
對 projects.locations.clusters.update 方法發出 PATCH 要求:
PATCH /v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID?updateMask=maintenancePolicy&requestId=REQUEST_ID
{
"maintenance_policy": null
}
更改下列內容:
PROJECT_ID:目標 Google Cloud 專案的 ID。REGION:建立目標 Distributed Cloud connected 叢集的 Google Cloud 區域。CLUSTER_ID:目標叢集的名稱。UPDATE_MASK:以半形逗號分隔的完整欄位名稱清單,用於以 FieldMask 格式更新這項要求中的欄位。REQUEST_ID:用於識別這項要求的專屬程式輔助 ID。USERNAME:有權修改叢集資源的目標 Google Cloud 專案中的使用者帳戶名稱。
詳情請參閱「資源:叢集」。
為叢集指定維護排除時段
如要為 Distributed Cloud connected 叢集指定維護排除時間範圍,請完成本節中的步驟。如要進一步瞭解叢集維護作業,請參閱「瞭解軟體更新和維護期間」。
日期和時間格式請使用 RFC 3339。
如要完成這項工作,您必須在 Google Cloud 專案中擁有Edge Container 管理員角色roles/edgecontainer.admin。
gcloud
使用 gcloud edge-cloud container clusters update 指令:
gcloud edge-cloud container clusters update CLUSTER_ID \
--project=PROJECT_ID \
--location=REGION \
--add-maintenance-exclusion-name=EXCLUSION_NAME \
--add-maintenance-exclusion-start=EXCLUSION_START \
--add-maintenance-exclusion-end=EXCLUSION_END
更改下列內容:
CLUSTER_ID:目標叢集的名稱。PROJECT_ID:目標 Google Cloud 專案的 ID。REGION:建立目標 Distributed Cloud connected 叢集的 Google Cloud 區域。EXCLUSION_NAME:這個維護排除範圍的說明名稱。EXCLUSION_START:維護期間的開始時間,格式為YYYY-MM-DDTHH:MM:SSZ。EXCLUSION_END:維護期間的結束時間,格式為YYYY-MM-DDTHH:MM:SSZ。
清除叢集的維護排除時段
如要清除 Distributed Cloud connected 叢集的維護排除時間範圍,請完成本節中的步驟。如要進一步瞭解叢集維護作業,請參閱「瞭解軟體更新和維護期間」。
如要完成這項工作,您必須在 Google Cloud 專案中擁有Edge Container 管理員角色roles/edgecontainer.admin。
gcloud
使用 gcloud edge-cloud container clusters update 指令:
gcloud edge-cloud container clusters update CLUSTER_ID \
--project=PROJECT_ID \
--location=REGION \
--remove-maintenance-exclusion-window=MAINTENANCE_EXCLUSION_WINDOW
更改下列內容:
CLUSTER_ID:目標叢集的名稱。PROJECT_ID:目標 Google Cloud 專案的 ID。REGION:建立目標 Distributed Cloud 叢集的 Google Cloud 區域。MAINTENANCE_EXCLUSION_WINDOW:要清除的維護排除時間範圍名稱。
刪除叢集
如要刪除 Distributed Cloud 連線叢集,請完成本節中的步驟。如要刪除叢集,請先刪除指派給叢集的所有節點集區。
如要完成這項工作,您必須在 Google Cloud 專案中擁有Edge Container 管理員角色roles/edgecontainer.admin。
gcloud
使用 gcloud edge-cloud container clusters delete 指令:
gcloud edge-cloud container clusters delete CLUSTER_ID \
--project=PROJECT_ID \
--location=REGION
更改下列內容:
CLUSTER_ID:目標叢集的名稱。PROJECT_ID:目標 Google Cloud 專案的 ID。REGION:建立目標 Distributed Cloud connected 叢集的 Google Cloud 區域。
API
對 projects.locations.clusters.delete 方法發出 DELETE 要求:
DELETE /v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID?requestId=REQUEST_ID
更改下列內容:
PROJECT_ID:目標 Google Cloud 專案的 ID。REGION:建立目標 Distributed Cloud connected 叢集的 Google Cloud 區域。CLUSTER_ID:目標叢集的名稱。REQUEST_ID:用於識別這項要求的專屬程式輔助 ID。