天天看點

kubernetes中的Pod簡述與實踐

kubernetes中的Pod簡述與實踐

Pod的概念

詳細的Pod解釋可參考k8s官網,關于Pod的概念主要有以下幾點:

(1)Pod是kubernetes中你可以建立和部署的最小也是最簡的機關。一個Pod代表着叢集中運作的一個程序;

(2)在Kubrenetes叢集中Pod的使用方式;

(3)Pod中如何管理多個容器

了解Pod

上面已經說了“Pod是kubernetes中你可以建立和部署的最小也是最簡的機關。一個Pod代表着叢集中運作的一個程序。”Pod中封裝着應用的容器(有的情況下是好幾個容器),存儲、獨立的網絡IP,管理容器如何運作的政策選項。Pod代表着部署的一個機關:kubernetes中應用的一個執行個體,可能由一個或者多個容器組合在一起共享資源。

#容器進行時,看參考如下文章或部落格:

(1)解密容器運作時

(2)Kubernetes(k8s)容器運作時(CRI)簡介

(3)容器運作時接口、容器網絡接口、容器存儲接口解析

Kubrenetes叢集中Pod的兩種使用方式之一

一個Pod中運作一個容器。

“每個Pod中一個容器”的模式是最常見的用法;在這種使用方式中,你可以把Pod想象成是單個容器的封裝,kuberentes管理的是Pod而不是直接管理容器。

Kubrenetes叢集中Pod的兩種使用方式之二

在一個Pod中同時運作多個容器。

一個Pod中也可以同時封裝幾個需要緊密耦合互相協作的容器,它們之間共享資源。這些在同一個Pod中的容器可以互相協作成為一個service機關——一個容器共享檔案,另一個“sidecar”容器來更新這些檔案。Pod将這些容器的存儲資源作為一個實體來管理。

##說明:文檔中“ image: dockerhub.com/redis:3.2.8”并不是真實的,如有需要請自行去下載下傳!

##說明

在一個Pod中同時運作多個容器是一種比較進階的用法。隻有當你的容器需要緊密配合協作的時候才考慮用這種模式。例如,你有一個容器作為web伺服器運作,需要用到共享的volume,有另一個“sidecar”容器來從遠端擷取資源更新這些檔案,如下圖所示:

kubernetes中的Pod簡述與實踐

Pod資源

Pod中可以共享兩種資源:網絡和存儲。

(1)網絡

每個Pod都會被配置設定一個唯一的IP位址。Pod中的所有容器共享網絡空間,包括IP位址和端口。Pod内部的容器可以使用localhost互相通信。Pod中的容器與外界通信時,必須配置設定共享網絡資源(例如使用主控端的端口映射)。

(2)存儲

可以Pod指定多個共享的Volume。Pod中的所有容器都可以通路共享的volume。Volume也可以用來持久化Pod中的存儲資源,以防容器重新開機後檔案丢失。

使用Pod

你很少會直接在kubernetes中建立單個Pod。因為Pod的生命周期是短暫的,用後即焚的實體。當Pod被建立後(不論是由你直接建立還是被其他Controller),都會被Kuberentes排程到叢集的Node上。直到Pod的程序終止、被删掉、因為缺少資源而被驅逐、或者Node故障之前這個Pod都會一直保持在那個Node上。

(1)重新開機Pod中的容器跟重新開機Pod不是一回事。Pod隻提供容器的運作環境并保持容器的運作狀态,重新開機容器不會造成Pod重新開機。

(2)Pod不會自愈。如果Pod運作的Node故障,或者是排程器本身故障,這個Pod就會被删除。同樣的,如果Pod所在Node缺少資源或者Pod處于維護狀态,Pod也會被驅逐。Kubernetes使用更進階的稱為Controller的抽象層,來管理Pod執行個體。雖然可以直接使用Pod,但是在Kubernetes中通常是使用Controller來管理Pod的。

Pod和Controller

Controller可以建立和管理多個Pod,提供副本管理、滾動更新和叢集級别的自愈能力。例如,如果一個Node故障,Controller就能自動将該節點上的Pod排程到其他健康的Node上。

具體的執行個體可參考:建立和管理多個Pod--Deployment

繼續閱讀