部署工作負載總覽

如要在 Google Kubernetes Engine 叢集上部署並管理容器化應用程式及其他工作負載,您可以使用 Kubernetes 系統建立 Kubernetes「控制器物件」。這些控制器物件代表在叢集上執行的應用程式、Daemon 和批次工作。

您可以使用 Kubernetes API 或使用由 gcloud 安裝的 Kubernetes 指令列介面 kubectl 來建立控制器物件。一般來說,您會為所需的 Kubernetes 控制器物件建立一個表示法做為 YAML 設定檔,然後與 Kubernetes API 或 kubectl 指令列介面搭配使用。

工作負載類型

Kubernetes 提供不同的控制器物件類型,對應到您可以執行的不同工作負載類型。某些控制器物件更適合代表特定工作負載類型。以下章節說明一些常見的工作負載類型,以及您可以建立並在叢集上執行的 Kubernetes 控制器物件,包括:

  • 無狀態應用程式
  • 有狀態應用程式
  • 批次工作
  • Daemon

無狀態應用程式

「無狀態應用程式」不會保留其狀態,且不會將資料儲存到永久儲存空間,所有使用者和工作階段資料都留在用戶端。

無狀態應用程式的範例包括網路前端 (如 Nginx)、網路伺服器 (如 Apache Tomcat),以及其他網路應用程式。

您可以建立 Kubernetes 部署以在叢集上部署無狀態應用程式。由部署所建立的 Pod 因為不是唯一,又不保留狀態,而使調度無狀態應用程式的資源和更新無狀態應用程式更加容易。

有狀態應用程式

「有狀態應用程式」需要儲存或永久保持其狀態。有狀態應用程式使用永久儲存空間 (例如永久磁碟區),來儲存伺服器或其他使用者使用的資料。

有狀態應用程式的範例包括資料庫 (如 MongoDB),以及訊息佇列 (如 Apache ZooKeeper)。

您可以建立 Kubernetes StatefulSet 來部署有狀態應用程式。StatefulSets 建立的 Pod 具有唯一 ID,可以按照順序安全地進行更新。

批次工作

「批次工作」代表有限、獨立且通常會是平行執行和完成的工作。批次工作的範例包括自動或排程工作,例如傳送電子郵件、影片處理和執行費用高昂的運算工作。

您可以建立 Kubernetes 工作以在叢集上執行及管理批次工作。您可以指定在批次工作完成之前,應完成工作的 Pod 數量,以及應同時執行的的最大 Pod 數量。

Daemon

「Daemon」會在指定節點中持續執行背景工作,不需使用者介入。Daemon 的範例包括記錄收集工具,像是 Fluentd 及監控服務。

您可以建立 Kubernetes DaemonSet 以在叢集上部署 Daemon。DaemonSet 為每個節點建立 Pod,您可以選擇應部署 DaemonSet 的特定節點。

管理工作負載物件

您可以使用「命令式」和「陳述式」方法建立、管理和刪除物件。以下各節將說明這些方法,採用這些方法所使用的工具:

命令式指令

命令式指令」可以讓您用 kubectl 快速建立、查看、更新和刪除物件。這些指令對於一次性的工作或變更叢集中正在運作的物件非常實用。命令式指令通常用於叢集上使用中的部署物件。

kubectl 具有幾個動詞驅動的指令,用來建立和編輯 Kubernetes 物件。例如:

  • run:在叢集中產生新物件。除非另外指定,run 會建立 Deployment 物件。run 也支援其他數個產生器
  • expose:建立新的 Service 物件,以讓流量在一組已標記的 Pod 間達到負載平衡。
  • autoscale:建立新的 Autoscaler 物件,自動水平調整 Deployment 等控制器物件。

命令式指令不需要對物件結構定義高度瞭解,也不需使用設定檔。

命令式物件設定

命令式物件設定」使用包含完整物件定義的設定檔建立、更新及刪除物件。您可以將物件設定檔儲存在來源控制系統中,使用比命令式指令更輕鬆的方式稽核變更。

您可以使用設定檔或含有設定檔的目錄執行 kubectl applydeletereplace 作業。

陳述式物件設定

陳述式物件設定」 在本機儲存的設定檔上作業,但不要求執行的作業要有明確的定義。kubectl 會自動偵測每個物件的作業。這相當實用,如果您要處理的設定檔目錄包含許多不同作業。管理陳述式物件需要高度瞭解物件結構定義及設定檔。

您可以執行 kubectl apply 以陳述方式建立並更新物件。apply 讀取整個使用中的物件、計算差異,然後向 API 伺服器傳送修補要求以合併這些差異來更新物件。

主控台

在使用 kubectl 或 API 部署工作負載後,您可以使用 GCP 主控台中的 GKE 工作負載選單來檢查、管理和編輯在叢集上執行的工作負載。

選單提供以下功能:

  • 您可以使用網路瀏覽器的 YAML 文字編輯器來編輯使用中的物件。
  • 您可以查看物件的詳細資訊,包括修訂版本記錄、最近事件和活動及其代管的 Pod。
  • 您可以輕鬆調度 Deployment、Job 及 StatefulSet 的資源
  • 您可以自動調度 Deployment 的資源、觸發滾動式更新,並從「Actions」(動作) 選單手動調度 Deployment 的資源。
  • 您可以使用 Cloud Shell 檢查、編輯和刪除任何物件。

API

您可以使用 GKE REST APIKubernetes API,搭配 Google Cloud 用戶端程式庫以程式化方式建立及管理工作負載。

設定檔

在您使用先前描述的方法部署工作負載時,GKE 會在您的叢集新增一個設定檔來代表該物件。

物件的「使用中設定」可能與其本機檔案不同。 YAML 是最常用於建立和代表 Kubernetes 物件的格式。您也可以使用 JSON

如要深入瞭解 Kubernetes 物件的規格、狀態及 Kubernetes API,請參閱瞭解 Kubernetes 物件Kubernetes API 參考文件

檢查使用中設定

主控台

如要檢查部署物件的使用中設定,請執行以下步驟:

  1. 造訪 GCP 主控台的 Google Kubernetes Engine「Workloads」(工作負載) 選單。

    造訪「Workloads」(工作負載) 選單

  2. 選取需要的工作負載。

  3. 按一下 [YAML]

gcloud

如要檢查部署物件的即時設定,請執行下列指令:

kubectl get [OBJECT_TYPE] [OBJECT_NAME] -o yaml

[OBJECT_TYPE] 可能是 deploymentstatefulsetjob,或是其他物件類型。例如:

kubectl get deployment my-stateless-app -o yaml

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Kubernetes Engine 說明文件