日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

有了容器为什么kubernetes还需要Pod?

發(fā)布時間:2023/12/4 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 有了容器为什么kubernetes还需要Pod? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡介

容器并不是軟件開發(fā)的銀彈,沒有任何一種技術(shù)能解決軟件開發(fā)中的所有問題

當(dāng)我們采用容器化技術(shù)的時候,摒棄了傳統(tǒng)的物理機或者虛擬機的部署方式,以一種更加輕快,便捷的方式來部署我們的應(yīng)用。到容器化的進階,再加上kubernetes對容器的編排技術(shù),使得容器化的利益進一步擴大。但是對于kubernetes來說,直接調(diào)度編排管理的基本單位并非容器,而是另外一種結(jié)構(gòu)體。

假設(shè)容器中同時運行著多個不相關(guān)的進程,這些進程的持續(xù)運行,管理,以及輸入輸出日志會是容器的責(zé)任。如果這些不相關(guān)的進程同時都有標(biāo)準(zhǔn)的輸出,而此時我們很難確定每個進程具體輸出了什么內(nèi)容。另一方面,每個容器是一個邏輯的運行單位,有著自己的命名空間,IP以及端口和其他信息,假如非一個團隊開發(fā)的不同進程監(jiān)聽了相同的端口號,必將發(fā)生資源的爭奪沖突。雖然多個進程運行在同一個容器中,無論是通過進程間通信還是通過存儲文件進行共享文件都很容易,但是Docker和kubernetes還是期望每個進程都運行在自己的容器中,除非是和自己相關(guān)的子進程。如果你的多個進程有著依賴關(guān)系(例如:一個進程的啟動依賴于另外一個進程),這樣的多個進程推薦運行在相同的容器中。

由于不推薦將無關(guān)的進程運行在同一個容器中,但是特殊情況下還存在要求多個相關(guān)進程運行于同一個容器的需求,kubernetes提供了一種更高級的結(jié)構(gòu)來把容器捆綁在一起,并將這種結(jié)構(gòu)作為調(diào)度部署的基本單元,這個結(jié)構(gòu)就是Pod。

Pod是一組并置的容器,是kubernetes中基本的構(gòu)建模塊。但是這并不意味著一個Pod總是包含多個容器,在實際應(yīng)用中每個Pod只有一個容器是最常見的部署方式。這里要注意一點,雖然對于kubernetes來說,并不關(guān)心Pod位于哪個節(jié)點上,但是一個Pod的多個容器位于多個節(jié)點是不允許的,換句話說,同一個Pod的多個容器總是運行在同一個集群節(jié)點上。

kubernetes部署和操作的基本單位是Pod

隔離

相同Pod下運行的容器之間可以共享一些資源,但是并非全部資源(話句話說,這些容器并非完全隔離的),kubernetes通過配置可以讓同一個Pod內(nèi)的容器共享相同的linux命名空間和network等資源,所以這些容器共享相同的主機名和網(wǎng)絡(luò)接口,話句話說,這些容器在Pod中可以進行IPC通信,就像在局域網(wǎng)中一樣。既然共享相同的IP和端口號,那么多個容器就不能綁定到相同的端口,否則會出現(xiàn)端口沖突,所以這也是官方推薦一個Pod只運行一個容器的原因之一。

每個Pod都有自己獨立的Ip和端口空間,所以不同的Pod內(nèi)的容器永遠不會發(fā)生端口沖突。同一個Pod中的容器具有相同的loopback,因此可以通過localhost與同一Pod中的其他容器進行通信

Pod網(wǎng)絡(luò)

在同一個kubernetes集群中的Pod就和局域網(wǎng)內(nèi)的每臺服務(wù)器一樣,他們共享一個網(wǎng)絡(luò)地址空間,這個網(wǎng)絡(luò)是通過軟件基于真實鏈路來實現(xiàn)的。所以只要知道一個Pod的IP地址就可以進行訪問,這個通信過程不通過網(wǎng)關(guān),在通信上性能非常好。由于kubernetes把資源進行了抽象,所以Pod無論位于哪個服務(wù)器節(jié)點上,對于同一個集群內(nèi)的Pod來說都一樣。

Pod使用多個容器

在多數(shù)情況下,我還是建議每個Pod運行一個容器,但是如果你的多個容器有互相依賴關(guān)系(比如一個容器的啟動依賴于另外一個容器),就需要把多個容器部署到一個Pod。一個Pod中運行一個容器更多的是基于應(yīng)用分層的考慮,例如:一個應(yīng)用的容器需要調(diào)用一個數(shù)據(jù)庫的容器,這兩個容器應(yīng)該分配到不同的Pod中,不僅僅是為了提高集群機器的利用率,更是為了之后不同層次的擴容。對于kubernetes來說,操作和部署的基本單位是Pod,所以kubernetes擴容的單位是Pod并非容器,如果我們的應(yīng)用層有性能瓶頸,我們就可以單獨的對應(yīng)用層的Pod進行單獨擴容,其他層的Pod保持不變,這不僅僅是節(jié)省資金成本的問題了,而是橫向擴展的靈活性問題。

●程序員修神之路--打通Docker鏡像發(fā)布容器運行流程

●程序員修神之路--容器技術(shù)為什么會這么流行(記得去抽獎)

●程序員修神之路--kubernetes是微服務(wù)發(fā)展的必然產(chǎn)物

●程序員過關(guān)斬將--要想獲取我的用戶信息,就得按照規(guī)矩來

●程序員過關(guān)斬將--更加優(yōu)雅的Token認(rèn)證方式JWT

●程序員過關(guān)斬將--cookie和session的關(guān)系其實很簡單

●程序員修神之路--用NOSql給高并發(fā)系統(tǒng)加速

●程序員修神之路--高并發(fā)系統(tǒng)設(shè)計負載均衡架構(gòu)

●程序員修神之路--做好分庫分表其實很難之一(繼續(xù)送書)

●程序員修神之路--做好分庫分表其實很難之二(送書繼續(xù))

●程序員過關(guān)斬將--你為什么還在用存儲過程?

●程序員過關(guān)斬將--小小的分頁引發(fā)的加班血案

●程序員修神之路--問世間異步為何物?

●程序員修神之路--提高網(wǎng)站的吞吐量????

總結(jié)

以上是生活随笔為你收集整理的有了容器为什么kubernetes还需要Pod?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。