第一篇主要介紹了k8s的幾個大的組件,kube-apiserver,scheduler,kubelet等,本文接着第一篇繼續對kubernetes的一些組件進行介紹。
pod
kubernetes的基本管理單位,可以包含一個或多個container,pod運行在具體的node節點上,kubernetes通過scheduler模塊來對
pod進行調度,已決定具體pod具體運行在那個節點上。具體調度算法後面通過一篇文章來具體介紹。在node節點上,kubelet負責具
體的pod創建,刪除和更新。pod間的通信通過service和kube-proxy進行代理。
node
node可以理解爲kubernetes管理的具體虛擬機,通過納管流程,虛擬機註冊到kubernetes,調度的時候只會調度這些納管的節點。
納管流程分爲靜態納管和動態納管兩種方式,靜態納管是對已經存在的虛擬機進行納管,動態納管需要動態的通過具體的I層去創建
虛擬機,納管節點主要是controller Manage遠程登陸該虛擬機,從倉庫中下載base_agent.sh腳本,然後在機器上執行
base_agent.sh腳本,該腳本主要實現下載agent包,安裝kubelet,kube-proxy和monit,安裝成功修改節點狀態,納管成功。
service
服務,是一個虛擬概念,邏輯上代理後端pod。衆所周知,pod生命週期短,狀態不穩定,pod異常後新生成的pod ip會發生變化,之前pod的訪問方式均不可達。通過service對pod做代理,service有固定的ip和port,ip:port組合自動關聯後端pod,即使pod發生改變,kubernetes內部更新這組關聯關系,使得service能夠匹配到新的pod。這樣,通過service提供的固定ip,用戶再也不用關心需要訪問哪個pod,以及pod會否發生改變,大大提高了服務質量。如果pod使用rc創建了多個副本,那麼service就能代理多個相同的pod,通過kube-proxy,實現負載均衡。
deployment
Deployment爲Pod和ReplicaSet提供了一個聲明式定義(declarative)方法,用來替代以前的ReplicationController來方便的管理應用。典型的應用場景包括:
- 定義Deployment來創建Pod和ReplicaSet
- 滾動升級和回滾應用
- 擴容和縮容
- 暫停和繼續Deployment