Kubernetes 的儲存體概念

已完成

Kubernetes 是一個開放的平台,可管理容器型應用程式及其相關聯的網路和儲存體元件。 提供部署的宣告式方法,並由一組健全的 API 所支援,以用於管理作業。

您可以使用 Kubernetes 建置及執行現代化、可攜式微服務型應用程式,以協調管理應用程式元件的可用性。

容器管理和協調流程

容器管理是針對大量容器進行整理、新增、移除或更新的流程。 容器協調器是一個自動部署和管理容器化應用程式的系統。 例如,協調器可以動態回應環境中的變更,以增加或減少受控應用程式的已部署執行個體,或者如果發行新版本的服務,則可確保所有已部署的容器執行個體都會更新。

Kubernetes 架構

Kubernetes 的結構建置在叢集上。 Kubernetes 叢集分為兩個核心基礎結構元件:

  • 控制平面提供核心 Kubernetes 服務和應用程式工作負載的協調流程。
  • 節點執行您的應用程式工作負載。 每個叢集至少有一個節點,但您可以定義節點的數目和大小。 節點集區是共用相同組態的節點群組。

應用程式工作負載的資源包含在 Pod 中。 Kubernetes 中的 Pod 是暫時性資源,代表應用程式的單一執行個體。 由一或多個容器組成,其中包含共用儲存體和網路資源,以及如何執行容器的規格。 Pod 的內容一律會共置及共同排程,並在共用內容中執行。

Kubernetes 中的永續性儲存體

在上一個單元中,我們已了解 Windows 容器中的支援機制,可讓您透過繫結掛接和具名磁碟區,為本機環境中的應用程式提供永續性儲存體。 不過,磁碟區和繫結掛接在 Kubernetes 之類的分散式環境中使用時有一些缺點。

磁碟區和繫結掛接會繫結至特定的主機,這表示它們無法跨叢集中的節點成為可攜。 如果容器排程在與其資料儲存所在不同的節點上,將無法存取容器。 此外,磁碟區和繫結掛接無法調整或復原,因為它們取決於單一主機的可用性和容量。

Kubernetes 藉由引進兩個抽象概念來解決容器的儲存體挑戰:永續性磁碟區永續性磁碟區宣告

永續性磁碟區

永續性磁碟區 (PV) 是由 Kubernetes API 在叢集中建立和管理的儲存體資源,可在個別 Pod 的存留期外持續存在。 叢集管理員可以透過靜態方式建立 PersistentVolume,或 Kubernetes API 伺服器可以使用儲存體類別動態建立。 PV 是叢集中的資源,就像節點是叢集資源一樣。 PV 的生命週期與任何使用 PV 的個別 Pod 無關。

永續性磁碟區宣告

永續性磁碟區宣告 (PVC) 要求特定 StorageClass、存取模式和大小的儲存體。 PVC 可作為記憶體資源的宣告檢查。 若沒有任何現有的資源可根據定義的 StorageClass 履行宣告,Kubernetes API 伺服器就能動態佈建基礎儲存體資源。

StorageClass 提供一種方式,讓系統管理員描述其提供的記憶體「類別」。 不同的類別可能會對應至服務品質等級,或對應至備份原則,或對應至叢集管理員所決定的任意原則。 Kubernetes 本身對於類別所代表的內容並無任何主張。

一旦 Kubernetes API 伺服器將可用的儲存體資源指派給要求儲存體的 Pod,PV 就會繫結至 PVC。 永續性磁碟區是與永續性磁碟區宣告的一對一對應。