### 序 上一篇我們介紹了 k8s 的基本架構,我們在這篇文章將介紹 `Kubernetes` 關鍵組件和概念。 還是先來一張圖: ![1_2pdatNn7KzcQZpc8cOALOQ.webp][1] 根據上圖我們分別對`Deployment`、`ReplicaSet`、`Pod`詳細的介紹,其 ...
序
上一篇我們介紹了 k8s 的基本架構,我們在這篇文章將介紹 Kubernetes
關鍵組件和概念。
還是先來一張圖:
根據上圖我們分別對Deployment
、ReplicaSet
、Pod
詳細的介紹,其他的幾個在上一篇也做了介紹:
Deployment
Deployment
是 Kubernetes
中的資源對象,為應用程式提供聲明性更新。部署允許你描述應用程式的生命周期。也就是說他的主要作用就是管理和控制 Pod 和 ReplicaSet
,監控它們運行在用戶所期望的狀態中。例如應用程式使用哪些鏡像像、應該有的 Pod 數量以及更新它們的方式。
ReplicaSet
ReplicaSet
是一個運行 Pod
的多個實例並保持指定的 Pod數量不變
的進程。目的就是在任何時間內維持集群中運行的指定數量的 Pod 實例,以防止用戶在 Pod 發生故障或無法訪問時失去對其應用程式的訪問許可權,如果監控到某一個Pod不能繼續服務的時候,他會確保我們的應用程式Pod
總體服務數量保持在我們期望的數量,然後再重新啟動一個Pod
。
這裡說一下
Replication Controller
與ReplicaSet
,Replication Controller
是一個較老的版本,後面被新版本ReplicaSet
取代,不過他們的作用是類似的。
我們在實時情況下,通常不會手動創建或管理
ReplicaSet
甚至Pod
, 我們會使用Deployment
的資源類型在Kubernetes
中部署 Pod。該Deployment
會在後臺自動為我們創建一個ReplicaSet
,然後該ReplicaSet
負責創建和管理Deployment
文件中提到的所需數量的 Pod 和 Pod 副本。
Pod
Pod
是 Kubernetes
的最小的構建塊或者說最小的部署單元。Pod 包含一組一個或多個容器。一般來說,每個Pod有一個容器。Pod 封裝了應用程式容器、存儲資源、唯一的網路 ID 以及有關如何運行容器的其他配置。如下圖:
當應用程式通過 ReplicaSet
水平擴展時,Pod 就會被覆制。每個 Pod 會運行相同的容器代碼。
我們在接觸k8s的時候經常會聽到Service
、Volumes
、namespace
那麼這幾個的作用又是什麼呢,我們繼續向下看:
Service
在 Kubernetes 中,Service是一個實體,代表一組運行應用程式或功能組件的 Pod。該Service保存訪問策略,並負責對傳入請求強制執行這些策略
對於Service的需求源於 Kubernetes 中 pod 的生命周期很短,可以隨時更換。Kubernetes 保證給定 pod 和副本的可用性,但不保證單個 pod 的活躍性,比如一組後端 Pod 為群集內的其他前端 Pod 提供功能,前端如何找到並跟蹤要連接的 IP 地址呢?這就需要它們連接到Service,該Service將它們中繼到相關的當前正在運行的 Pod。
該Service分配一個虛擬 IP 地址,稱為 clusterIP,該地址將一直存在,直到被明確銷毀為止。該Service充當組件或應用程式之間通信的可靠端點。
對於 Kubernetes 本機應用程式,使用服務的另一種方法是直接通過 Kubernetes API Server 發出請求。API Server 自動公開並維護運行 Pod 的端點。
Volume
類似於 Docker 中的容器Volume,但 Kubernetes Volume適用於整個 Pod,並掛載在 Pod 中的所有容器上。Kubernetes 確保數據在容器重新啟動時得以保留。僅當 pod 被破壞時,該 Volume 才會被刪除。此外,一個 Pod 可以關聯多個Volume(可能是不同類型的)。
Volume 是 Pod 的一個組件,Volume 是在 Pod 規範中創建的,不能單獨刪除。
Namespace
namespace
是一種將集群組織成虛擬子集群的方法,當不同的團隊或項目共用 Kubernetes 集群時就需要用到namespace
。集群內支持任意數量的namespace
,每個namespace
在邏輯上彼此分離,能夠相互通信,但是不能相互嵌套。
Kubernetes
中的任何資源都存在於default
這個namespace
或由集群操作員創建的namespace
中。
總結
這篇文章主要介紹了k8s裡面一些重要概念,Deployment
、ReplicaSet
、Pod
以及Service
、Volumes
、namespace
,當然還有很多的一些抽象概念,比如Ingress
等,總之k8s裡面一堆的東西,一時半會兒也是理解不完的,這個需要長久的去學習深挖,這裡就不過多的去一一介紹了,接下來會直接去介紹怎麼使用k8s以及使用k8s的一些問題。
轉載:風向閱讀 - Kubernetes 系列:Kubernetes 關鍵組件和概念(二)
地址:https://www.aiweimeng.top/archives/26.html