1. 程式人生 > >k8s學習筆記之核心概念

k8s學習筆記之核心概念

一、背景介紹

雲端計算三大型別:

IaaS:即基礎設施即服務

PaaS:即平臺即服務

SaaS:即軟體即服務

docker容器技術的迅猛發展:

一次構建,到處執行

容器的快速輕量

完整的生態環境

二、什麼是kubernates

k8s是google開源的容器叢集管理系統,在谷歌內部被稱borg,在docker技術的基礎上,為容器化的應用提供部署執行、資源排程、服務發現和動態伸縮等一系列完整功能,提高了大規模容器叢集管理的便捷性。

kubernates優勢:

容器編排

輕量級

開源

彈性伸縮

負載均衡

三、k8s的核心概念

叢集:

叢集式一組節點,這些節點可以是物理伺服器或者虛擬機器,之上安裝了kubernetes平臺,這裡可以看到一個典型的kubernetes架構圖
image

從上面可以看到如下元件,使用特別的圖標表示service和label:
pod
container(容器)
label(標籤)
replication controller(複製控制器)
service(服務)
node(節點)
kubenates master(主節點)

這裡分別講述一下各個元件的概念:

1、pod

運行於node節點上,。pod內包含的容器執行在同一宿主主機上,使用相同的網路名稱空間、ip地址和埠、能夠通過localhost進行通訊,pod是k8s進行建立、排程和管理的最小單位,它提供了比容器更高層次的抽象,使得部署和管理更加靈活,一個pod可以包含一個容器或者多個相關容器。

2、Replication Controller

Recplication Controller用來管理pod的副本,保證叢集中存在置頂數量的pod副本,叢集中副本的數量大於置頂數量,則會殺掉置頂數量之外的多餘容器數量,反之則會啟動少於置頂數量個數的容器,保證數量不變,replication controller是實現彈性伸縮、動態擴容和滾動升級的核心。如動態圖所示:

image

3、service

service定義了pod的邏輯集合和訪問該集合的策略,是真實服務的抽象,service提供了一個統一的服務入口以及服務代理和發現機制,使使用者不需要了解後臺pod如何執行。

如果pods是短暫的,那麼重啟時ip地址發生了變化,那麼怎麼才能從前端容器正確指向後臺容器呢?

service是定義一系列pod以及份這些pod的策略的一層抽象,service通過label找到Pod組,因為service是抽象的,所以在圖示裡通常看不到它的存在,這也就讓這一概念更難以理解了。

現在,假定有兩個後臺pod,並且定義後臺service的名詞為’back-service’,labe選擇器為(tier=back,app=mapp),back-service的service會完成如下兩件重要的事情:

  • 會為service建立一個本地叢集的dns入口,因此前端pod只需要dns查詢主機名為’back-service’,就能夠解析出前端應用程式可用的ip地址。

  • 現在前端已經得到了後臺服務的ip地址,但是它應該選擇2個後臺pod的哪一個呢?service在這兩個後臺pod之間提供透明的負載均衡,會將請求分發給其中的容易一個,通過每個node上執行的代理(kube-proxy)完成。如圖:

image

4、label

k8s中的容器api物件都是通過Label進行 ,label的實質是一系列的k/v鍵值對,label是replication controllerh和service執行的基礎,二者通過label進行判別node上執行的pod。

5、node

node是k8s叢集架構中執行pode的伺服器節點,通常稱為minion,node是k8s叢集操作的單元,用來承載被分配的pod的執行,是pod執行的宿主機,每個節點都執行如下的k8s關鍵主鍵:
- kubelet:是主節點代理
- kube-proxy:service使用其將連線路由到Pod
- docker或者rocket:k8s使用的容器技術來建立容器

四、深入體驗