Kubernetes編排的最小單位并不是容器,是一個叫做POD的東西。
POD翻譯成中文就是豌豆莢的意思,我們知道在一個豌豆莢里可以有很多豌豆,這些豌豆就是一個個的容器實例。那么這些容器實例之間有什么關(guān)系呢?記住兩個點即可:同一個POD內(nèi)的容器共享數(shù)據(jù)存儲和IP地址。為什么要這么設(shè)計呢?首先我們需要知道很多時候我們需要使用容器承載微服務(wù)。什么是微服務(wù)呢,簡單來說就是小而單一的服務(wù)。
在做微服務(wù)設(shè)計的時候,我們一般推薦一個應(yīng)用一個進程,如果承載體為容器的話,那就是一個容器一個進程。但是現(xiàn)實是很多時候為了管理微服務(wù)我們需要安裝相關(guān)的服務(wù)監(jiān)控軟件或數(shù)據(jù)讀取軟件。也就意味著我們需要在一個容器中安裝多個軟件,也就是多個進程。這樣就破壞了我們剛剛說的一個容器一個進程的原則。
為了完成符合微服務(wù)的設(shè)計原則,谷歌設(shè)計了POD這個概念。一般一個POD中會有多個容器,一個服務(wù)容器(用于提供服務(wù)),多個輔助容器(用于完成服務(wù)容器的監(jiān)控或數(shù)據(jù)的管理。)
打個比方我們有個POD,POD內(nèi)有三個容器,分別是:web容器、監(jiān)控容器和日志讀取容器。
首先web容器中只運行web軟件,對外暴露的端口為80
監(jiān)控容器中運行web容器的監(jiān)控軟件,此監(jiān)控軟件只需要監(jiān)控127.0.0.1:80即可完成web服務(wù)的監(jiān)控。因為POD內(nèi)的容器共享IP地址。
日志讀取容器,只需要將相關(guān)路徑下的文件讀取上報給對應(yīng)的日志管理平臺即可。因為POD內(nèi)的容器共享數(shù)據(jù)存儲。
通過POD這個概念的設(shè)計,我們就可以很輕松的管理相關(guān)服務(wù)了。
