什麼是 Kubernetes?

Kubernetes (通常使用「K8s」做為縮寫) 會負責協調容器化應用程式,以便在主機叢集上加以執行。K8s 系統會使用地端基礎架構或公有雲平台,自動部署和管理雲原生應用程式。Kubernetes 可將應用程式工作負載分配至整個 Kubernetes 叢集中,並將動態容器網路需求自動化。此外,Kubernetes 也會配置儲存和持續性磁區來執行容器、提供自動延展功能,並透過持續運作來維護應用程式的目標狀態,從而提供彈性。

瞭解企業如何使用 Kubernetes 大規模建置、部署與執行現代化應用程式。

Kubernetes 5 分鐘簡介

《2022 年 Kubernetes 現況》(The State of Kubernetes 2022)

Kubernetes 的功能

Kubernetes 可提供多項功能,以協調多部主機中的容器、自動管理 K8s 叢集,並透過更妥善地運用基礎架構,以達到充分使用資源的目的。其重要功能包括:

  • 自動延展:依照使用情況,自動延展或縮減容器化應用程式及其資源。
  • 生命週期管理:使用下列功能來自動部署和更新:
    • 復原先前版本
    • 暫停和繼續部署
  • 宣告式模型:宣告目標狀態,隨後 K8s 就會在背景作業以維護該狀態,並從任何故障中復原
  • 彈性和自行修復:透過自動配置、自動重新啟動、自動複寫和自動延展等機制,進行應用程式自行修復
  • 持續性儲存:可動態裝載和新增儲存空間
  • 負載平衡:Kubernetes 可支援各種內部和外部負載平衡選項,以因應多樣化需求
  • 開發資安營運支援:開發資安營運是一種進階安全性方法,旨在簡化和自動化不同雲端中的容器作業、將整個容器生命週期的安全性予以整合,並讓團隊加速交付安全且高品質的軟體。結合開發資安營運做法和 Kubernetes,可提升開發人員生產力。

Kubernetes 架構及其運作方式

容器會透過可輕鬆部署且可移轉的形式來封裝應用程式。Kubernetes 架構是專為執行容器化應用程式所打造。Kubernetes 叢集至少包含一個控制平台,以及一個工作節點 (通常為實體或虛擬伺服器)。控制平台肩負兩大主要職責:透過 API 伺服器公開 Kubernetes API,以及管理組成叢集的多個節點。控制平台會進行叢集管理的相關決策,並偵測與回應叢集事件。

針對在 Kubernetes 中執行的應用程式,其最小執行單位為 Kubernetes Pod,當中會包含一個或多個容器,並於工作節點上執行。

其他 Kubernetes 詞彙

請務必瞭解重要 K8s 元件的名稱和功能,有些為控制平台的一部分,有些則會在 Kubernetes 上執行。

Kubernetes Terminology

控制平台中有四個主要元件,可用來控制通訊、管理節點,以及追蹤 Kubernetes 叢集的狀態。

  • Kube-apiserver:如同名稱所示,kube-apiserver 負責公開 Kubernetes API。
  • etcd:這是索引鍵值存放區,可存放與 Kubernetes 叢集相關的所有資料。
  • Kube-scheduler:負責觀察沒有指派節點新 Kubernetes Pod,並將其指派至節點,以根據資源、原則和「相似性」規格加以執行。
  • Kube-controller-manager:控制平台中的所有控制器功能,都會編譯至 kube-controller-manager 這個單一二進位檔中。

K8s 節點包含三大主要元件:

  • Kubelet:這個代理程式會確保必要的容器皆於 Kubernetes Pod 中執行。
  • Kube-proxy:這個網路 Proxy 會在叢集中的每個節點上執行,以維護網路規則,並允許通訊。
  • 容器執行階段:這個軟體會負責執行容器。Kubernetes 可支援符合 Kubernetes CRI (容器執行階段介面) 的任何執行階段。

其他需要留意的詞彙包括:

  • Kubernetes 服務:Kubernetes 服務為一組 Kubernetes Pod (全數執行相同的功能) 的邏輯抽象化。Kubernetes 服務會被指派獨一無二的位址,即使 Pod 執行實例不斷往來,也將保持不變。
  • 控制器:控制器會確保 Kubernetes 叢集實際執行狀態盡量接近目標狀態。
  • Operator:Kubernetes Operator 類似於操作手冊,可讓您封裝應用程式的特定領域知識。Operator 可將應用程式特定的作業自動化,讓您在 K8s 上更輕鬆地部署和管理應用程式。

Kubernetes 的優勢

Kubernetes 可提供以下多項重要優勢,因此廣為各方所用:

  • 可移轉性:從虛擬環境到裸機等,容器可在多種環境之間移轉。所有主要公有雲都可支援 Kubernetes,正因如此,您可以在許多不同環境內的 K8s 上執行容器化應用程式。
  • 整合與擴充性:您可擴充 Kubernetes,以搭配您已採用的解決方案運作,包含記錄、監控和警示服務等。Kubernetes 社群正致力於研究各種可輔助 Kubernetes 的開放原始碼解決方案,打造豐富且快速成長的商業網路。
  • 成本效益:Kubernetes 的固有特質包括:資源最佳化、自動化延展,以及可在最能發揮價值之處彈性執行工作負載;這表示,您能自主掌控 IT 支出。
  • 延展性:雲原生應用程式可水平延展。Kubernetes 採用「自動延展」機制,可自動啟動額外的容器執行實例並進行延展,以此回應需求。
  • API 架構:Kubernetes 的基礎結構為 REST API。Kubernetes 環境中的一切,都可透過程式設計控制。
  • 簡化 CI/CD:CI/CD 是一種開發營運做法,可自動建置和測試應用程式,並將其部署至生產環境。企業正在整合 Kubernetes 和 CI/CD,以建立可延展的 CI/CD Pipeline,繼而動態因應負載。

什麼是容器協調作業?

容器協調作業會自動進行執行容器化工作負載和服務所需的多數作業,包括 Kubernetes 容器生命週期的各項必備作業,例如:佈建、部署、延展、網路和負載平衡。

Kubernetes 與 Docker

Docker 是用來建立容器化應用程式的軟體平台。針對使用 Docker 或其他工具所建立的容器化、雲原生應用程式,K8s 會自動進行其執行流程。許多公司經常結合運用 Docker 和 Kubernetes

相關解決方案與產品

Tanzu Kubernetes Grid

企業立即可用的 Kubernetes 管理

Tanzu Community Edition

只需短短幾分鐘,即可在您的本機工作站或雲端上,免費啟動並執行 VMware Tanzu

Tanzu Application Platform

在 Kubernetes 平台上建置、部署和管理應用程式