本頁面說明如何使用網路服務級別,控管外部流量如何連至 Google Kubernetes Engine (GKE) 叢集上的 Service。網路服務級別可讓您選擇進階級服務,將網路流量效能最佳化;或是選擇標準級服務,盡可能節省成本。
進階級服務透過 Google 的進階骨幹網路傳輸流量,提供優異的速度和穩定性。相較之下,標準級使用一般的網際網路服務供應商 (ISP) 網路,提供更具成本效益的解決方案。
本文適用於負責設計及建構機構網路的雲端架構師和網路專家。如要進一步瞭解 Google Cloud 內容中提及的常見角色和工作範例,請參閱「常見的 GKE 使用者角色和工作」。
網路服務級別在 GKE 的運作方式
本節說明如何在 GKE 中管理網路服務級別。
在專案層級設定網路級別:您可以為 Google Cloud 專案設定預設網路級別,使用標準級或進階級。所有新叢集都會使用
network-default設定建立,並沿用專案層級的層級設定。這項設定在叢集升級後仍會保留。在叢集內建立的節點集區會沿用專案層級設定的網路級別。建立新叢集時設定網路級別:建立新叢集時,無論 Google Cloud 專案的級別設定為何,您都可以設定網路級別。新的節點集區會使用叢集層級的網路級別,即使升級節點集區,這項設定仍會保留。
在更新叢集時設定網路級別:您可以在更新現有叢集時設定網路級別。新的節點集區和新的 LoadBalancer 服務會沿用更新後的級別設定,而現有的節點集區和服務則會繼續使用原始網路級別設定。升級叢集後,更新的層級設定會保留。
更新 LoadBalancer Service 時設定網路級別:LoadBalancer Service 會繼承叢集的網路級別。不過,您可以覆寫這項設定,並在服務資訊清單中更新網路層級。
網路服務級別和負載平衡
根據預設,區域性外部直通式網路負載平衡器會使用進階級。您可以更新這項設定,讓 LoadBalancer 服務改用標準級。
如果將應用程式負載平衡器與閘道搭配使用,則無法設定網路服務級別。Gateway 的網路服務級別由 GatewayClass 資源控管。詳情請參閱「閘道 IP 位址」。
外部應用程式負載平衡器的 GKE Ingress 不支援標準級流量轉送。
事前準備
開始之前,請務必先完成下列工作:
- 啟用 Google Kubernetes Engine API。 啟用 Google Kubernetes Engine API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文件中的指令。
限制
相關限制如下:
- 您只能在專案或叢集層級設定網路級別。您無法直接設定節點集區的網路級別。
- 全域外部雙重堆疊 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,負載平衡器會使用進階級。如要覆寫這項設定,請在 Service 資訊清單中設定 cloud.google.com/network-tier 註解。例如:
```yaml
apiVersion: v1
kind: Service
metadata:
name: store-v1-lb-svc
annotations:
cloud.google.com/network-tier: Standard
spec:
type: LoadBalancer
loadBalancerClass: networking.gke.io/l4-regional-external
selector:
app: store
ports:
- name: tcp-port
protocol: TCP
port: 8080
targetPort: 8080
```
如要進一步瞭解 LoadBalancer 服務使用的參數,請參閱「服務參數」。
靜態 IP 位址:使用靜態 IP 位址建立 Service 時,靜態 IP 位址的網路級別必須與 LoadBalancer Service 的網路級別相符。如果不相符,執行 kubectl describe service 指令時會看到下列錯誤訊息:
Error syncing load balancer: failed to ensure load balancer: requested ip "standard-service" is neither static nor assigned to the LB
後續步驟
- 參閱網路服務級別總覽。
- 瞭解如何建立以後端服務為基礎的外部負載平衡器。