K8s基礎概念

最近在做新的系統架構,使用了比較新的容器技術K8s來做一整套分佈式系統架構。今天來記錄一下K8s的一些基礎概念。純憑記憶,如有錯誤請指正。

 

什麼是K8s

 

網上能看到的就不說了,說一些我理解的。

K8s是一套google開源的利用容器技術的分佈式及系統解決方案。通過對應用程序的容器化管理,實現服務的自動管理,如部署,多實例,負載均衡,自動重啓等。如果說spring cloud是一套在代碼層解決分佈式問題的解決方案,那麼K8s就是一套以一種完全代碼無侵入的方式實現的分佈式架構。在K8s集羣內,一般情況下是存在一個master節點和多個working節點。master節點主要跑的是K8s相關進程,而我們的應用主要是跑在應用節點上。如果使用的如阿里雲這類的雲平臺,會有一些託管班的K8s服務,這時候我們所有的節點均爲working節點。當然如果我們單機學習時,本機既是master節點又是working節點。

 

下面說幾個基礎概念

 

pod

pod是K8s中管理的最小單位,一個pod可以理解爲一個容器,每個pod裏有一個根容器pause容器,他爲這個pod提供統一的存儲;還有一組提供服務的應用程序容器。pod可以放多個相關的應用程序來提供服務。這一組服務在一個pod下統一管理。實在不好理解,我們可以簡單的理解爲一個pod放一個微服務應用副本。但是切記概念不僅於此。

 

service

service是K8s中的一個重要概念。字面意思每個service其實就是一個服務。分佈式架構中可以理解爲我們系統中的一個微服務。在K8s環境內,每個服務對應多個pod。就是對應的多個應用副本。所以K8s自帶應用程序的負載均衡。service其實是一個虛擬的存在,他提供集羣內一個clusterIP和port,形成endpoint,在集羣內service通過endpoint來提供服務。

 

deployment

 

deployment是K8s 1.2之後提供的一個功能(可能是,沒記住),它的前身是RC(replication controller)。這裏不細講RC了。說說deployment,他是K8s現在最爲廣泛使用的。當我們需要創建一個service時,我們可以通過定義一個deployment來實現對service及鎖對應的pod的控制,其中還可以定義副本數量,pod的template,port、targetPort 等。可以說我們可以直接通過deployment來對我們餓服務進行一站式管理。

 

label和selector

 

這是一組概念,我們放一塊說,label是標籤,selector是標籤選擇器。

上面說到deployment可以管理service、service又有多個pod副本。那麼他們是如何找到彼此呢?關鍵在於label標籤。K8s內通過打標籤的方式,給每個概念綁定一個標籤,然後通過在service、deployment、甚至是之前的RC中使用selector標籤選擇器來管理綁定。

 

基礎的概念大概就這麼多,其實說好理解也好理解,說不好理解確實我也還有一些理解的不到位。且學且珍惜吧。後面有空再拿書來補充一下基礎概念;現在能想到的就這麼多了。

 

 

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