參考《每天5分鐘玩轉kubernetes》 coldman著。
一、概念
1. cluster
cluster是計算、儲存和網路資源的集合, k8s使用這些資源執行基於容器的應用
2. master
cluster的大腦,主要職責是排程,決定將應用放在**執行。在linux上執行(物理機or虛擬機器)。為了高可用,可執行多個master。
3. node
職責是執行容器應用。由master管理,監控、匯報容器狀態,要據master要求管理容器生命週期。執行於linux(物理機or虛擬機器)
4. pod
最小工作單元,每個pod包含1個or多個容器。作為整體被master排程到node上執行。
4.1 引入pod(比容器更高層次的抽象)的目的:
(1) 可管理性。
將需要一起工作的(緊密聯絡的)容器封裝到同乙個部署單元,以pod為最小單位進行排程、擴充套件、共享資源、管理生命週期。
(2) 通訊和資源共享。
pod中所有容器使用同乙個網路namespace(相同ip+port),可直接用localhost通訊。共享儲存,k8s掛載volume到pod,本質是將volume掛載到pod中的每個容器。
4.2 pods的2種使用方式
(1) 執行單一容器
one-container-per-pod, 只將單個容器簡單封裝成pod.
(2) 執行多個容器
緊密聯調並需要共享資源的容器放到乙個pod中。
5. controller
定義了pod的部署特性,比如幾個副本、在什麼樣的node上執行。k8s(不直接建立pod)通過controller管理pod。提供deployment, replicaset, daemonset, statefulset, job等controller來滿足不同業務場景。
5.1 deployment: 最常用,可以管理pod的多個副本,確保pod按照期望的狀態執行。
5.2 replicaset: deployment通過replicaset來管理pod的多個副本,使用deployments時會自動建立replicaset(不需要直接使用replicaset)。實現了pod的多副本管理。
5.3 daemonset: 通常用於執行daemon, 每個node最多隻執行1個pod副本的場景。
5.4 statefullset: 保證pod的每個副本在整個生命週期中名稱不變。當某個pod發生故障需要刪除並重啟時,pod名稱會發生變化。保證副本按照固定的順序啟動、更新或刪除。
5.5 job: 用於執行結束就刪除的應用。其他controller中的pod通常是長期持續執行。
6. service
pod銷毀和重啟後,ip可能會發生變化。deployment部署多個副本,每個pod都有自己的ip。
service提供外界訪問一組特定pod的方式。service有自己的ip和port,為pod提供負載均衡。
k8s執行pod: controller
k8s訪問pod: service
7. namespace
將同乙個k8s cluster中多個使用者或專案組的controller和pod等資源分開。
namespace將乙個物理的cluster邏輯上劃分成多個虛擬的cluster, 每個cluster就是乙個namespace,不同namespace裡的資源是完全隔離的。
k8s預設建立2個namespace:
default: 建立資源時如果不指定namespace,則為default。
kube-system: k8s自己建立的系統資源
k8s重要概念
kubernetes架構圖 下圖為kubernetes的master架構圖 cluster是計算 儲存和網路資源的集合,kubernetes利用這些資源執行各種基於容器的應用。master 是cluster的大腦,它的主要職能就是負責排程,決定應用放在 執行。master執行linux作業系統,可以...
k8s重要概念
kubernetes架構圖 下圖為kubernetes的master架構圖 cluster是計算 儲存和網路資源的集合,kubernetes利用這些資源執行各種基於容器的應用。master 是cluster的大腦,它的主要職能就是負責排程,決定應用放在 執行。master執行linux作業系統,可以...
K8S 重要概念 及 部署K8S集群
cluster是 計算,儲存和網路資源的集合,k8s利用這些資源執行各種基於容器的應用 master是cluster的大腦,他的主要職責是排程,即決定將應用放在 執行。master執行linux作業系統,可以是物理機或者虛擬機器。為了實現高可用,可以執行多個master。node的職責是執行容器應用...