本頁面概述 Google Kubernetes Engine (GKE) 中的叢集標籤和節點集區標籤。
GKE 叢集和節點集區標籤,以及 Kubernetes 標籤
GKE 叢集和節點集區標籤與 Kubernetes 標籤不同。這兩個標籤系統各自獨立運作,不會沿用或共用標籤。
GKE 叢集和節點集區標籤是附加到資源的任意中繼資料,您可以使用這些標籤追蹤帳單和用量資訊。
在 Kubernetes 中,系統會在內部使用標籤,建立叢集元件和資源 (例如 Pod 和節點) 彼此之間的關聯,並管理資源生命週期。您可以使用 Kubernetes API 編輯 Kubernetes 標籤。您也可以使用 GKE API,透過建立叢集或更新叢集,編輯節點上的 Kubernetes 標籤。
什麼是叢集標籤?
叢集標籤是可指派給 Google Cloud 叢集的鍵/值組合。這些工具可協助您整理資源,並以所需的精細程度大規模管理費用。您可以為每一項資源加上標籤,並根據標籤來篩選資源。標籤資訊會轉送至帳單系統,方便您按標籤查看帳單費用明細。透過內建的帳單報表,您可以依資源標籤篩選及分組費用。您也可以使用標籤查詢帳單資料匯出內容。
叢集標籤規定
套用到資源的叢集標籤必須符合下列規定:
- 每項資源最多可有 64 個叢集標籤。
- 每個叢集標籤都必須是鍵/值組合。
- 鍵的長度下限為 1 個字元,上限為 63 個字元,不能空白。值可以空白,長度上限為 63 個字元。
- 鍵和值只能使用小寫字母、數字字元、底線和連字號。所有字元都必須使用 UTF-8 編碼,且可使用國際字元。鍵的開頭必須是小寫字母或國際字元。
- 叢集標籤中,鍵的部分在單一資源內不得重複。 但可讓多個資源使用相同的鍵。
這些限制適用於每個叢集標籤的鍵和值,以及具有叢集標籤的個別 Google Cloud 資源。專案中所有資源可套用的叢集標籤數量沒有上限。
叢集標籤的常見用途
以下是叢集標籤的一些常見用途:
團隊或成本中心叢集標籤:根據團隊或成本中心加上標籤,以區別不同團隊擁有的叢集 (例如
team:research
和team:analytics
)。這類型的標籤可用於成本會計或預算編列作業。元件叢集標籤:例如
component:redis
、component:frontend
、component:ingest
和component:dashboard
。環境或暫存叢集標籤:例如
environment:production
和environment:test
。狀態叢集標籤:例如
state:active
、state:readytodelete
和state:archive
。擁有權叢集標籤:用於識別負責作業的團隊,例如:
team:shopping-cart
。
- 帳單明細:使用節點集區標籤,依節點集區細分帳單費用。詳情請參閱「查看叢集費用的詳細明細」。
我們不建議您建立大量的不重複標籤,例如幫時間戳記或每個 API 呼叫的個別值建立標籤。這種做法的問題在於,如果值經常變更,或使用會使目錄雜亂的鍵,就難以有效篩選及回報資源。
標籤
標籤可用做資源的可查詢註解,但無法用來設定政策的條件。您可將資源是否具備特定標記設為條件,並按照這項條件允許或拒絕政策,進而精細控管政策。詳情請參閱「標記總覽」。
自動套用的標籤
GKE 會自動將數個標籤套用於叢集資源。
舉例來說,GKE 會將標籤套用於 Compute Engine 執行個體、永久磁碟和加速器 (TPU)。
下表列出 GKE 自動套用至資源的標籤:
標籤 | 已套用的資源 |
---|---|
goog-gke-node |
GKE 節點底層的 Compute Engine VM 執行個體。 |
goog-gke-volume |
連結至 GKE 節點底層 VM 執行個體的 Compute Engine 永久磁碟。 |
goog-gke-tpu |
GKE 中的 Cloud TPU。 |
goog-k8s-cluster-name |
Compute Engine VM 執行個體,以及連結至 GKE 節點基礎 VM 執行個體的永久磁碟。 |
goog-k8s-cluster-location |
Compute Engine VM 執行個體,以及連結至 GKE 節點基礎 VM 執行個體的永久磁碟。 |
goog-k8s-node-pool-name |
Compute Engine VM 執行個體及其開機磁碟 (GKE 節點的基礎)。 |
goog-fleet-project |
如果叢集已向車隊註冊,則為 Compute Engine VM 執行個體,以及連結至 GKE 節點底層 VM 執行個體的永久磁碟。 |
goog-gke-accelerator-type |
GKE 節點集區。 |
goog-gke-tpu-node-pool-type |
GKE 節點集區。 |
goog-gke-node-pool-provisioning-model |
GKE 節點集區。 |
請勿編輯或刪除保留標籤。系統會自動調整您對預留標籤所做的任何變更。
標籤傳播
在 GKE 中,您可以將標籤套用至叢集和標準模式節點集區。為叢集加上標籤時,標籤會傳播至叢集的所有個別資源,例如節點、執行個體和永久磁碟。為節點集區加上標籤時,標籤會傳播至節點集區的所有個別資源,例如執行個體和永久磁碟。在標準叢集中,如果叢集標籤與節點集區標籤衝突 (例如標籤鍵相同但值不同),節點集區標籤會覆寫叢集標籤。
您套用至叢集或節點集區的標籤,會透過每小時執行的背景程序傳播。標籤可能需要一小時才會出現在與指定叢集相關的所有資源上。此外,標籤只會傳播至 Compute Engine 執行個體,以及附加至 Compute Engine 執行個體的永久磁碟。工作負載、轉送規則、IP 位址和未附加的永久磁碟等其他資源不會加上標籤。
如果是標準叢集,將叢集和節點集區標籤套用至 Compute Engine 資源後,您可以手動變更資源標籤,GKE 不會協調這些變更。在 Autopilot 叢集中,您無法手動修改 Compute Engine 資源的標籤,因為 GKE 會為您管理節點。不過,建議透過 GKE 管理這些標籤。除非與自動套用的標籤衝突,否則 GKE 不會移除 Compute Engine 資源上的現有標籤。
事前準備
開始之前,請確認你已完成下列工作:
- 啟用 Google Kubernetes Engine API。 啟用 Google Kubernetes Engine API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update
,取得最新版本。
為 API 要求取得標籤指紋
如果您使用 Google Cloud 控制台或 gcloud CLI,可以略過這個步驟。
使用 GKE API 更新或新增叢集標籤時,您必須在要求中提供最新叢集標籤指紋,避免與其他要求發生衝突。
如要取得最新叢集標籤指紋,請為適當叢集執行 GET
要求。例如:
GET https://container.googleapis.com/v1/projects/myproject/zones/us-central1-f/clusters/example-cluster
輸出結果會與下列內容相似:
200 OK
{
"name": "mycluster",
"description": "production-cluster",
"initialNodeCount": 3,
...
"resourceLabels": {
"environment": "production",
...
},
"labelFingerprint": "p1ty_9HoBk0="
}
在這個輸出內容中,labelFingerprint
屬性是叢集標籤指紋。
建立具有標籤的叢集
您可以使用 gcloud CLI、 Google Cloud 控制台、GKE API 或 Terraform,建立附有標籤的 Autopilot 和 Standard 叢集。
gcloud
執行下列指令,建立含有標籤的 Autopilot 叢集:
gcloud container clusters create-auto CLUSTER_NAME \
--labels=KEY=VALUE
或者,執行下列指令,建立含有標籤的標準叢集:
gcloud container clusters create CLUSTER_NAME \
--labels=KEY=VALUE
更改下列內容:
CLUSTER_NAME
:叢集名稱。KEY
:標籤鍵/值組合的鍵。VALUE
:標籤鍵/值組合的值。
控制台
如要在建立叢集時新增標籤,請執行下列步驟:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
按一下「add_box Create」(建立)。
設定叢集。
在導覽窗格的「Cluster」(叢集) 底下,按一下「Metadata」(中繼資料)。
按一下 add「新增標籤」。
新增標籤。
點選「建立」。
API
如要在建立叢集時加入標籤,請在您提供給 projects.zones.clusters.create 的 cluster
物件內指定 resourceLabels
物件。
Terraform
如要使用 Terraform 建立具有標籤的 Autopilot 叢集,請參閱下列範例:
如要使用 Terraform 建立含有標籤的 Standard 叢集,請參閱下列範例:
如要進一步瞭解如何使用 Terraform,請參閱「GKE 的 Terraform 支援」。
為現有叢集新增或更新標籤
您可以使用 gcloud CLI、Google Cloud console 或 GKE API,為現有的 Autopilot 和標準叢集新增或更新標籤。
gcloud
執行下列指令:
gcloud container clusters update CLUSTER_NAME \
--location =CONTROL_PLANE_LOCATION \
--update-labels=KEY=VALUE
更改下列內容:
CLUSTER_NAME
:叢集名稱。CONTROL_PLANE_LOCATION
:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。KEY
:標籤鍵/值組合的鍵。VALUE
:標籤鍵/值組合的值。
標籤更新會覆寫叢集上的所有現有標籤。如果您想保留叢集中的一些現有標籤,則必須將這些標籤與要新增的新標籤一起納入。
控制台
如要新增或更新標籤,請按照下列步驟操作:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在「叢集詳細資料」頁面上,選取要修改的一或多個叢集核取方塊。
按一下「標籤」
。新增或更新標籤。
按一下 [儲存]。
API
以最新的指紋以及要套用的完整標籤清單,對叢集的 resourceLabels
方法提出 POST
要求。
與中繼資料和標記類似,如果您想保留叢集中的一些現有標籤,則必須將這些標籤與要新增的新標籤一起納入要求中。
舉例來說,下列程式碼片段會向 resourceLabels
方法提出要求:
POST https://container.googleapis.com/v1/projects/myproject/zones/us-central1-f/clusters/example-cluster/resourceLabels
{
"resourceLabels": {
"environment": "production",
"an-existing-tag": ""
},
"labelFingerprint": "42WmSpB8rSM="
}
移除叢集標籤
您可以使用 gcloud CLI、 Google Cloud 控制台或 GKE API,從 Autopilot 和標準叢集移除標籤。
gcloud
執行加上 --remove-labels
旗標的 update
指令:
gcloud container clusters update CLUSTER_NAME \
--remove-labels=KEYS
更改下列內容:
CLUSTER_NAME
:叢集名稱。KEYS
:以半形逗號分隔的清單,當中列有要移除的標籤鍵。
控制台
如要移除標籤,請按照下列步驟操作:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在叢集清單中,選取一或多個要修改的叢集,勾選對應的核取方塊。
按一下「標籤」
。找出要刪除的標籤,然後點選「值」欄位旁邊的「刪除項目」delete。
按一下 [儲存]。
API
對適當叢集的 resourceLabels
方法提出 POST
要求。如要移除所有標籤,請提供目前的 labelsFingerprint
和空白標籤清單。如果只要移除部分標籤,則請提供要保留的標籤清單 (省略要移除的標籤)。例如:
Request
POST https://container.googleapis.com/v1/projects/myproject/zones/us-central1-f/clusters/example-cluster/resourceLabels
{
"resourceLabels": { },
"labelFingerprint": "42WmSpB8rSM="
}
建立含有標籤的標準節點集區
您可以使用 gcloud CLI、 Google Cloud 控制台或 GKE API,在標準叢集中建立附有標籤的節點集區。
gcloud
執行下列指令:
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--labels=KEY=VALUE
更改下列內容:
NODE_POOL_NAME
:節點集區的名稱。CLUSTER_NAME
:叢集名稱。CONTROL_PLANE_LOCATION
:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。KEY
:標籤鍵/值組合的鍵。VALUE
:標籤鍵/值組合的值。
API
如要在建立節點集區時加入標籤,請在您提供給 projects.zones.clusters.nodePools.create
的節點集區物件內指定 resourceLabels
物件。
主控台
如要為新的節點集區新增標籤,請執行下列步驟:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在「叢集詳細資料」頁面中,按一下要修改的叢集名稱。
按一下 add_box「Add Node Pool」(新增節點集區)。
設定新的節點集區。
按一下導覽窗格中的「中繼資料」。
按一下 add「新增標籤」。
新增標籤。
點選「建立」。
為現有節點集區新增或更新標籤
您可以使用 gcloud CLI、 Google Cloud 控制台或 GKE API,為現有節點集區新增或更新標籤。
這項變更需要重新建立節點,可能會導致執行中的工作負載中斷。如要瞭解這項特定變更的詳細資訊,請在「手動變更,使用節點升級策略重建節點,但不遵守維護政策」表格中,找到對應的資料列。如要進一步瞭解節點更新,請參閱「規劃節點更新中斷」。
gcloud
執行下列指令:
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--labels=KEY=VALUE
更改下列內容:
NODE_POOL_NAME
:節點集區的名稱CLUSTER_NAME
:叢集名稱。CONTROL_PLANE_LOCATION
:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。KEY
:標籤鍵/值組合的鍵。VALUE
:標籤鍵/值組合的值。
標籤更新會覆寫節點集區上的所有現有標籤。如果您想保留節點集區中的一些現有標籤,則必須將這些標籤與要新增的新標籤一起納入。
API
如要在修改節點集區時加入標籤,請在您提供給 projects.zones.clusters.nodePools.update
的節點集區物件內指定 resourceLabels
物件。
主控台
如要新增或更新標籤,請按照下列步驟操作:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在叢集清單中,按一下要修改的節點集區所屬叢集名稱。
在「Node Pools」(節點集區) 區段中,按一下要修改的節點集區名稱。
按一下「編輯」edit。
在「標籤」部分新增或更新標籤。
按一下 [儲存]。
移除節點集區標籤
您可以使用 gcloud CLI、 Google Cloud 控制台或 GKE API,從節點集區移除標籤。
gcloud
執行下列指令:
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--labels=KEY=VALUE
更改下列內容:
NODE_POOL_NAME
:節點集區的名稱。CLUSTER_NAME
:叢集名稱。CONTROL_PLANE_LOCATION
:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。KEY
:標籤鍵/值組合的鍵。VALUE
:標籤鍵/值組合的值。
標籤更新會覆寫節點集區上的所有現有標籤。如果節點集區含有您要保留的現有標籤,則必須排除要移除的標籤。如要移除所有標籤,請使用不含任何鍵/值組合的 --labels=
。
API
如要在修改節點集區時加入標籤,請在您提供給 projects.zones.clusters.nodePools.update
的節點集區物件內指定 resourceLabels
物件。如要移除所有標籤,請提供空白標籤清單。如果只要移除部分標籤,則請提供要保留的標籤清單。省略要移除的標籤。
主控台
如要從節點集區移除標籤,請按照下列步驟操作:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在叢集清單中,按一下要修改的節點集區所屬叢集名稱。
在「Node Pools」(節點集區) 區段中,按一下要修改的節點集區名稱。
找出要刪除的標籤,然後點選「值」欄位旁邊的 delete「刪除項目」。
按一下 [儲存]。