本頁說明如何使用網路服務級別,控管外部流量抵達 Google Kubernetes Engine (GKE) 叢集上服務的方式。網路服務級別可讓您選擇最佳化網路流量效能 (進階級服務) 或節省成本 (標準級服務)。
進階級服務會透過 Google 的進階骨幹網路傳輸流量,確保速度和穩定性。相較之下,標準級使用一般的網際網路服務供應商 (ISP) 網路,提供更具成本效益的解決方案。
本頁面適用於負責設計及建構機構網路的雲端架構師和網路專家。如要進一步瞭解我們在內容中提及的常見角色和範例工作,請參閱「常見的 GKE 使用者角色和工作」。 Google Cloud
網路服務等級在 GKE 中的運作方式
本節說明如何在 GKE 中管理網路服務等級。
在專案層級設定網路級別:您可以為 Google Cloud 專案設定預設網路級別,使用標準級或進階級。所有新叢集都會採用
network-default
設定,並繼承專案層級的層級設定。這項設定會在叢集升級後保留。在叢集中建立的節點集區會沿用專案層級設定的網路層級。建立新叢集時設定網路層級:建立新叢集時,您可以設定網路層級,不受 Google Cloud 專案層級設定影響。新節點集區會使用叢集層級的網路層級,即使升級節點集區,這項設定也會保留。
更新叢集時設定網路層級:更新現有叢集時,您可以設定網路層級。新的節點集區和 LoadBalancer 服務會沿用更新後的層級設定,現有的節點集區和服務則會繼續使用原始的網路層級設定。叢集升級後,更新後的層級設定會保留。
更新 LoadBalancer 服務時設定網路層級:LoadBalancer 服務會沿用叢集的網路層級。不過,您可以覆寫這項設定,並在服務資訊清單中更新網路層級。
網路服務級別和負載平衡
根據預設,外部直通式網路負載平衡器會使用進階級別。您可以更新這項設定,讓 LoadBalancer 服務改用標準級。
如果搭配使用應用程式負載平衡器與閘道,則無法設定網路服務層級。Gateway 上的網路服務級別由 GatewayClass 資源控管。詳情請參閱「閘道 IP 位址」。
外部應用程式負載平衡器的 GKE Ingress 不支援標準級別的流量路徑。
事前準備
開始之前,請確認您已完成下列工作:
- 啟用 Google Kubernetes Engine API。 啟用 Google Kubernetes Engine API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update
,取得最新版本。
限制
相關限制如下:
- 您只能在專案或叢集層級設定網路層級設定。您無法直接設定節點集區的網路層級。
- Standard 層級不支援全域外部雙重堆疊 IPv4 或 IPv6 位址。如要進一步瞭解 IP 位址類型,請參閱「IP 位址」一文。
建立具有網路服務級別的叢集
如要建立叢集並指定網路層級,請執行下列指令:
gcloud container clusters create CLUSTER_NAME \
--network-tier=NETWORK_TIER \
...
替換下列值:
CLUSTER_NAME
:叢集名稱。NETWORK_TIER
:網路層級設定。使用network-default
與專案相同的層級設定, Google Cloud 標準層級請使用Standard
,進階層級請使用Premium
。
將現有叢集遷移至其他層級
更新叢集的網路層級不會影響現有資源的網路層級。現有資源會繼續使用與舊網路層級相關聯的 IP 位址。為避免服務中斷,請按照下列步驟將叢集遷移至新的網路層級:
更新叢集:如要使用網路層級更新現有叢集,請執行下列指令:
gcloud container clusters update CLUSTER_NAME \ --network-tier=NETWORK_TIER \ ...
替換下列值:
CLUSTER_NAME
:叢集名稱。NETWORK_TIER
:網路層級設定。使用network-default
與專案相同的層級設定, Google Cloud 標準層級請使用Standard
,進階層級請使用Premium
。
建立新的節點集區和服務:如要讓外部用戶端使用與新網路層級相關聯的新 IP 位址,您必須建立新的節點集區和 LoadBalancer 服務。新的節點集區和 LoadBalancer 服務會沿用更新後的層級設定,現有節點集區和服務則會繼續使用原始的網路層級設定。
更新 DNS 記錄:變更 DNS 記錄,指向新 LoadBalancer 服務的新 IP 位址。
等待 DNS 傳播:等待 DNS 存留時間 (TTL) 到期,確保用戶端會導向新服務,並避免提供過時的記錄。
使用網路服務級別更新外部負載平衡器
如果是外部直通式網路負載平衡器,GKE 預設會使用叢集上設定的網路層,做為外部轉送規則和 IP 位址。如果叢集的網路層級設為 network-default
,負載平衡器會使用進階級。如要覆寫這項設定,請在服務資訊清單中設定 cloud.google.com/network-tier
註解。例如:
```yaml
apiVersion: v1
kind: Service
metadata:
name: store-v1-lb-svc
annotations:
cloud.google.com/l4-rbs: "enabled"
cloud.google.com/network-tier: Standard
spec:
type: LoadBalancer
selector:
app: store
ports:
- name: tcp-port
protocol: TCP
port: 8080
targetPort: 8080
```
如要進一步瞭解 LoadBalancer 服務使用的參數,請參閱服務參數。
靜態 IP 位址:建立具有靜態 IP 位址的服務時,靜態 IP 位址的網路層必須與 LoadBalancer 服務的網路層相符。如果版本不符,執行 kubectl describe service
指令時會看到下列錯誤訊息:
Error syncing load balancer: failed to ensure load balancer: requested ip "standard-service" is neither static nor assigned to the LB
後續步驟
- 閱讀網路服務等級總覽。
- 瞭解如何建立以後端服務為基礎的外部負載平衡器。