什麼是 Kubernetes?

隨著機構逐漸廣泛採用容器,以容器為中心的管理軟體 Kubernetes 就成為部署和操作容器化應用程式的標準。Kubernetes 起源於 Google Cloud,我們先在 Google 開發 Kubernetes,隨後在 2014 年發布為開放原始碼。Google 憑藉執行容器化工作負載 15 年的經驗,並融合開放原始碼社群寶貴的貢獻,才建構出 Kubernetes。受到 Google 內部叢集管理系統 Borg 的啟發,Kubernetes 把所有部署和管理應用程式相關環節都精心簡化。Kubernetes 提供自動化的容器調度管理功能,有助於提升作業可靠性,並減少分配至日常運作的時間和資源。

參加 Google Skills 的實作實驗室,測試自己是否確實掌握相關知識

Kubernetes 的定義

Kubernetes (有時會使用縮寫 K8s,8 是 K 到 s 中間的英文字母數量) 是一種開放原始碼系統,可在任何環境中部署、擴充及管理容器化應用程式。

Kubernetes 會自動執行容器管理的操作工作,並內建多種指令,可用於部署應用程式、逐步推出應用程式的變更、根據不斷變動的需求來調度應用程式資源,以及監控應用程式等,藉此簡化應用程式的管理作業。

Kubernetes 的運作方式

對於在多個容器和伺服器中調度資源的應用程式,Kubernetes 有助於簡化管理作業。這項服務會使用開放原始碼 API 編排部署作業,將容器分組至 Pod,並根據需求和資源可用性調度資源。Kubernetes 也會自動執行服務探索、負載平衡和資源分配作業,並監控健康狀態,藉由重新啟動或複製容器來自我修復。

以下是 Kubernetes 的運作方式,企業開發人員可參考:

  • 定義應用程式:首先使用 YAML 檔案定義應用程式的所需狀態。這些檔案會指定要執行的容器、所需的資源 (CPU、記憶體) 和公開到網路的方式。
  • 將要求傳送至 Kubernetes API:您會將這些 YAML 檔案提交至 Kubernetes API,通常是使用 kubectl 指令列工具。
  • 排程器將 Pod 指派給節點:Kubernetes 排程器會分析應用程式的需求,在叢集中找出最適合執行容器 (封裝為 Pod) 的節點。
  • kubelet 啟動容器:在每個節點上,kubelet 程序會接收控制層的指示並啟動容器。
  • Service 公開應用程式:Kubernetes Service 會為應用程式提供穩定的 IP 位址和 DNS 名稱,讓其他應用程式可以存取,即使 Pod 建立、終止及重新排程也沒問題。
  • 控制器確保所需狀態:Kubernetes 控制器會持續監控應用程式的狀態,並在必要時採取修正行動。舉例來說,如果 Pod 發生當機,控制器會自動建立新的 Pod 來取代。
  • 調度及更新:只要更新 Deployment 設定中的副本數量,就能輕鬆調度應用程式資源。Kubernetes 會配合所需的規模,自動建立或移除 Pod。 滾動式更新能讓您不必停機,即可部署新版應用程式。

Kubernetes 的好處有哪些?

自動化作業

Kubernetes 內建各種指令,可用於處理許多繁重的應用程式管理工作,不僅能協助您將日常作業自動化,還能確保應用程式始終按照預期方式執行。

基礎架構抽象層

Kubernetes 在安裝後,就會代替工作負載處理運算、網路和儲存。如此一來,開發人員就可以專注在應用程式上,不必擔心基礎環境的問題。

服務健康狀態監控

Kubernetes 會持續對服務執行健康狀態檢查,重新啟動失敗或暫停的容器,而且只會在確認容器都已成功運行後,才讓使用者使用服務。

最佳化資源使用率

Kubernetes 會根據需求,有效率地將容器封裝至節點,進而提升資源使用率,減少資源浪費,降低基礎架構成本。

簡化應用程式管理作業

透過 Kubernetes 簡化應用程式管理作業。Kubernetes 提供一致的方法,助您部署、更新及管理複雜度各異的應用程式。

可攜性更高

Kubernetes 是開放原始碼平台,可在各種環境 (從地端部署資料中心到公有雲) 穩定運作,為企業提供彈性和可攜性。

透過 Google Cloud 解決業務難題

新客戶可以獲得價值 $300 美元的免費抵免額,盡情試用各項 Google Cloud 功能。
與 Google Cloud 銷售專員聯絡,深入探討貴公司面臨的獨特挑戰。

Kubernetes 與 Docker 的比較

比較 Kubernetes 與 Docker 時,常會落入非此即彼的陷阱,兩者雖然是用於執行容器化應用程式的不同技術,卻能互相補足彼此的不足。

Docker 會讓您將執行應用程式所需的全部資源都放到一個箱子裡,這個箱子可以在需要的時間和位置儲存及開啟。一旦開始採用封裝應用程式的做法,就需要一種方法加以管理,這就是 Kubernetes 能派上用場的地方。

Kubernetes 是希臘文,指的是船長。就像船長負責海上航行安全一樣,Kubernetes 會負責將這些箱子安全運送到可以使用的位置。

  • 不論有無 Docker,Kubernetes 都能使用
  • Docker 無法取代 Kubernetes,所以不是「非此即彼」的關係。將 Kubernetes 與 Docker 結合使用,不但可以將應用程式容器化,還能大規模執行應用程式
  • Docker 和 Kubernetes 之間的差異與各自在容器化和執行應用程式中所扮演的角色有關
  • Docker 是一種開放性業界標準,可用於將應用程式封裝並分散到容器中
  • Kubernetes 會使用 Docker 來部署、管理和擴充容器化應用程式

常見的 Kubernetes 用途

Kubernetes 可用於建立易於管理且能輕鬆部署到任何環境的應用程式。以代管服務形式使用的 Kubernetes 能提供各種解決方案滿足您的需求,以下是一些常見的用途。

加快開發速度

Kubernetes 可以協助建構以微服務為基礎的雲端原生應用程式,此外也支援現有應用程式的容器化,因此能做為翻新應用程式的基礎,讓您加速開發應用程式。

  • 實例:一家金融服務公司使用 Kubernetes 為自家網路銀行平台部署微服務,加快開發週期並提升擴充能力

在任何環境中部署應用程式

Kubernetes 可在任意位置使用,無論是現場部署和公有雲,還是混合式部署,都能執行應用程式。也就是說,您可以在任何需要的地方執行應用程式。

  • 範例:一間全球電子商務公司使用 Kubernetes,在多個雲端服務供應商部署應用程式,確保高可用性並避免受限於單一廠商

執行高效率服務

Kubernetes 可以自動調整執行服務所需的叢集大小,讓您可以根據需求自動調度應用程式資源,以更有效率的方式執行應用程式。

  • 實例:媒體影視串流服務使用 Kubernetes,根據觀看內容的使用者人數自動調整影片編碼基礎架構的資源配置,進而最佳化資源使用率並降低成本

常見問題

瀏覽這些 Kubernetes 常見問題

Kubernetes 叢集由節點 (虛擬或實體機器) 組成,這些節點會執行由 Kubernetes 自動調度的容器化應用程式。

Kubernetes Pod 是最小的可部署單位,可容納一或多個容器,代表單一運作中的程序執行個體。

Kubernetes Deployment 可管理副本及順利的更新作業,確保應用程式達到所需狀態。

Kubernetes 服務是 Kubernetes 物件,可為應用程式提供穩定的 IP 位址和 DNS 名稱,讓其他應用程式可以存取。

只要更新部署設定中的副本數量,就能調度應用程式資源。Kubernetes 會配合所需的規模,自動建立或移除 Pod。

展開下一步行動

運用價值 $300 美元的免費抵免額和超過 20 項一律免費的產品,開始在 Google Cloud 中建構產品與服務。