1. 程式人生 > >K8s核心概念入門

K8s核心概念入門

開發十年,就只剩下這套架構體系了! >>>   

前言

新的一年還是要學習一些新技術的,先從k8s開始吧。 作為一個想成為“微服務技術專家”,除了上層類spring cloud的解決方案,服務治理方案之外,k8s作為底層基礎設施,所承擔的自動擴縮容,devops等功能也是微服務架構中很重要的一環。

k8s

k8s作為容器化作業系統,包括了部署,排程,節點叢集間擴充套件。docker作為k8s底層的排程元件。主要具備:

  • 自動化容器的部署和複製
  • 隨時擴充套件或收縮容器部署
  • 打包容器組,並提供容器間的負載均衡
  • 提供容器彈性操作等

k8s叢集

k8s的叢集,一般以一組物理節點或虛擬機器節點組成,在節點上部署k8s,架構圖如下:

通過上圖可以觀察到一些名詞:

  • Container
  • Pod
  • Label
  • Replication Controller
  • Service
  • Node
  • K8s Master

Pod

Pod安裝在節點上,包含一組容器和卷,同一個Pod裡面的容器共享網路名稱空間,可以使用localhost進行通訊。pod是隨時建立銷燬的。

  • 因為pod是短暫的,所以需要使用k8s的掛載卷儲存持久化容器資料。
  • pod的建立可以通過手動建立,也可以使用replication controller根據pod模板創建出拷貝。
  • 引入service解決因為pod建立銷燬帶來的ip地址改變的問題。

Label

Label是一個鍵值對,可以用來標記pod,service或者replication controller可以通過selectors選擇帶有指定label的pod。

Replication Controller

通過RC可以確保任何時間都存在指定數量的pod副本。比如建立3個副本,k8s會監控他們,隨時確保永遠有3個副本在執行。

建立RC時,需要指定兩個東西:

  • Pod模板:用來建立Pod副本。
  • Label:RC需要監控的Pod的副本集。

Service

多個Pod副本可以通過Service做負載均衡。

由於Pod的IP是短暫的,所以引入了Service,Service是個邏輯概念,Service通過selector篩選label和Pod進行繫結。

在Service對pod進行繫結時會做以下事情:

  • 為Service建立一個DNS入口,前端Pod會根據DNS查詢service並解析出ip地址。
  • 前端pod在得到service的ip地址後,會根據service的負載均衡策略,請求到具體的pod上,底層通過node上的kube-proxy完成。

Node

Node叫做節點,一般是物理機或者虛擬機器,是k8s的工作節點,node上有k8s相關的關鍵元件:

  • Kubelet:主節點代理
  • Kube-proxy:Serivce使用其路由到Pod
  • Docker:用於容器建立

K8s Master

Master是叢集的主節點,擁有K8s api server,可以對外提供rest互動,master節點可以用來建