Kubernetes(2:概念)
- 2019 年 10 月 6 日
- 筆記
cluster 計算存儲和網絡資源的集合,利用這些資源運行各種基於容器的應用。 Master 負責調度,運行在LINUX中。 Node 負責運行容器,由MASTER管理,監控和彙報容器狀態,運行在LINUX上。 Pod:容器的集合,同一個Pod中的所有容器共享IP地址和PORT空間,是最小單位。 Service:外界訪問容器。 Namespace:Namespace 可以將一個物理的Cluster 邏輯上劃分成多個虛擬Cluster,每個Cluster 就是一個Namespace o 不同Namespace 里的資源是完全隔離的。Kubernetes 默認創建了兩個Namespace,default :創建資源時如果不指定, 將被放到這個Namespace 中。kube-system: Kubernetes 自己創建的系統資源將放到這個Namespace 中。 Controller:Kubernetes 通常不會直接創建Pod ,而是通過Controller 來管理Pod 的。Controller 中定義了Pod 的部署特性,比如有幾個副本、在什麼樣的Node 上運行等。為了滿足不同的業務場景, Kubernetes 提供了多種Controller ,包括Deployment 、ReplicaSet 、DaemonSet 、StatefuleSet、Job。 C 1 ) Deployment 是最常用的Controller,比如在線教程中就是通過創建Deployment 來 部署應用的。Deployment 可以管理Pod 的多個副本,並確保Pod 按照期望的狀態運行。 C 2) ReplicaSet 實現了Pod 的多副本管理。使用Deplo嚴nent 時會自動創建ReplicaSet, 也就是說Deployment 是通過ReplicaSet 來管理Pod 的多個副本的,我們通常不需要直接使用ReplicaSeto ( 3 ) DaemonSet 用於每個Node 最多只運行一個Pod 副本的場景。正如其名稱所揭示 的, DaemonSet 通常用於運行daemon 。 C 4) StatefuleSet 能夠保證Pod 的每個副本在整個生命周期中名稱是不變的,而其他 Controller 不提供這個功能。當某個Pod 發生故障需要刪除並重新啟動時, Pod 的名稱會發生變化,同時StatefuleSet 會保證副本按照固定的順序啟動、更新或者刪除。 ( 5) Job 用於運行結束就刪除的應用,而其他Con往oller 中的Pod 通常是長期持續運行。
Kubemetes 引入Pod 主要基於下面兩個目的: Cl )可管理性。 有些容器天生就是需要緊密聯繫, 一起工作。Pod 提供了比容器更高層次的抽象, 將它 們封裝到一個部署單元中。Kubemetes 以Pod 為最小單位進行調度、擴展、共享資源、管理 生命周期。 (2) 通信和資源共享。 Pod 中的所有容器使用同一個網絡namespace,即相同的IP 地址和Port 空間。它們可 以直接用localhost 通信。同樣的,這些容器可以共享存儲,當Kubemetes 掛載volume 到 Pod,本質上是將volume 掛載到Pod 中的每一個容器。