Kubernetes核心概念總覽

系統的學習了一遍Kubernetes,發現概念太多,使用的時候有的概念容易混淆或記不清,寫一篇文章做一個記錄和梳理。

Master

關鍵進程:

  • API Server:集羣控制的入口進程,提供了Rest接口
  • Controller Manager:所有資源對象的自動化控制中心,“大總管”
  • Scheduler:負責資源調度,“調度室”

Node

關鍵進程:

  • kubelet:負責Pod的創建、啓停,實現集羣管理的基本功能
  • kube-proxy:實現Kubernetes Service的通信與負載均衡機制
  • Docker Engine:Docker引擎,容器創建與管理

每個Node都是一臺物理機,都有自己的Node IP

Pod

有一個根容器--Pause,剩下的就是業務容器。
有一個唯一的Pod IP,因爲存在虛擬二層網絡,所以Node間的Pod是可以通信的

Service

通過Label Selector關聯一組Pod來組成一個Service。
有一個全局唯一的虛擬IP,稱爲Cluster IP。

Endpoint

暴露的端口和Cluster IP組成一個Endpoint,一個Service可以有多個Endpoint

RC

全名Replication Controller,定義了一個期望的Pod場景,比如始終保持Pod數量爲3個

RS

全名Replica Set,是RC的升級版,一般與Deployment搭配使用

Deployment

可以知道當前Pod“部署”的進度,因爲從Pod到Node是一個連續變化的狀態

StatefulSet

顧名思義:有狀態的Pod集合。
必須與Headless Service配合使用,Headless Service是一個無負載均衡器的Service,它沒有Cluster IP,解析他的域名,會返回對應全部Pod的Endpoint列表。

HPA

全稱Horizontal Pod Autoscaler,實現K8s的自動水平擴容和縮容

Job

批處理的工作項

Kubernetes Volume

Volume定義在Pod上,與Pod生命週期相同,同時還支持分佈式文件系統

Persistent Volume

PV是一個獨立的網盤,可以在每個Node訪問
Pod使用PersistentVolumeClaim來申請PV,PVC會根據容量進行自動綁定

Namespace

實現多租戶的隔離

Annotation

與Label類似,但不是用於Label Selector,而是用於用戶任意定義的附加信息,以便於外部工具查找

ConfigMap

所有配置項都當成是key-value字符串,放到etcd中。
然後Kubernetes將存儲在etcd中的ConfigMap通過Volume映射的方式變成目標Pod內的配置文件

DaemonSet

爲每個Node上都調度一個Pod

Ingress

如果要向外暴露服務,上面講到可以通過NodePort的方式來完成。弊端是每個Node上都會開放這個端口
用Nginx的話,又需要Rolling Update
所以k8s弄了一個Nginx的抽象層Ingress
使用Ingress進行負載分發時,Ingress Controller會跳過kube-proxy,而直接轉發到後端Endpoint上。Ingress Controller對外提供服務,可以看做實現的是邊緣路由器的功能

kube-proxy

在Kubernetes集羣的每個Node上都會運行一個kube-proxy服務進程,我們可以把這個進程看做Service的透明代理兼負載均衡器,核心功能是將某個Service的訪問請求轉發到後端的多個Pod實例上

StorageClass

StorageClass作爲對存儲資源的抽象定義,對用戶設置的PVC申請,屏蔽後端存儲的細節,實現了動態的資源供應。PVC找到合適的StorageClass後,將自動創建一個PV並完成與PVC的綁定
StorageClass被創建出來後,則無法修改。如需修改,則只能刪除。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章