pod 控制器 3
簡單回顧
之前我們學習過的的 docker ,例如我們運行
docker run busybox echo "hello wrold"

他的實際內在邏輯是這個樣子的

程序將指令推送給 docker
docker 會檢查本地是否有 busybox 鏡像,若沒有則去 docker hub 上面拉取鏡像,并下載到本機,再基于這個鏡像創(chuàng)建一個 容器
在容器中運行指令 echo “hello wrold”
前面我們也知道了 每一個 pod 或者 docker 容器,都有自己獨立的文件系統(tǒng),進程,用戶,主機名和網絡接口
簡單運行 pod
如果想簡單運行一個 pod,我們可以這樣做
kubectl run xmtkubia --image=xiaomotong888/xmtkubia --port=8080
xiaomotong888/xmtkubia 是 dockerhub 上面的具體公開的鏡像

pod 中的容器運行位置
我們知道 pod 中可以運行 1 個容器或者多個容器,那么如果 1 個pod 中,運行多個容器,那么這些容器都會運行在同一個工作節(jié)點上面嗎?

當一個 pod 中有多個容器的時候,這些容器一定總是運行在同一個工作節(jié)點上面的,一個 pod 絕對不會跨越多個工作節(jié)點
為什么是 一個 pod 里面跑多個容器,而不是一個容器里面跑多個進程?
在我們學習 docker 和 K8S 的過程中,有沒有思考過,為什么需要引入 pod 這個概念,我們一個容器里面設計成跑多個進程不就好了嗎?
實際上,容器是被設計成每個容器只能運行一個進程的,當然這個進程在程序中自動開辟的子進程是不包含在內的
如果我們單個容器中運行了多個不相關的進程,那么當同一個容器中別的進程崩潰的時候,便會影響到其他進程
多個進程跑在同一個容器中,如何區(qū)分進程在標準輸出打印的信息呢,這會很麻煩
提出 pod 其實是一種解決方案
提出 pod 這種結構后,1 個 pod 可以和多個容器綁定在一起
1 個 pod 里面可以同時運行多個進程(即多個容器),并且這行進程能夠享有幾乎同樣的環(huán)境
從外部看,這些進程好像是全部運行在單個容器中,實際上這些進程又相互保持一定的隔離
上面這里說到的 pod 中的容器相互間保持的著一定的隔離,而不是完全隔離
這里指的是隔離容器組,而不是單個容器,每個容器組內的容器是可以共享容器組的資源的
容器如何共享 ip 和 端口
同一個 pod 中的容器是運行在相同的 Network 命名空間中的,因此他們對于 ip 地址和端口空間是共享的
那么同一個 pod 下面的容器,配置 端口號的時候就需要注意,不能沖突,例如這樣

在 K8S 中,所有的 pod 都是在同一個網絡地址空間中,網絡信息他們是共享的
如圖,不同 pod ?之間是可以通過 ip 直接訪問的

看了以上 pod 的行為,有沒有覺得 pod 的行為和實際的虛擬機或者物理機的行為有很多類似的地方,虛擬機里面跑的每一個進程,pod 里面也可以直接跑這些進程,只不過,pod 里面的每一個進程,都被一個容器包裹
所以啊, pod 可以看做是一個邏輯主機
實在的案例
一個應用程序,有前端應用服務器,和 后端的數據庫,如果我們需要將這個程序放到 K8S 環(huán)境中,我們是啟 1 個 pod 還是 2個 pod ?

在 K8S 中是推薦將上述的前端服務器和 后臺數據庫分開,分成 2 個 pod 去部署,原因有這些:
這樣既能夠充分利用多個節(jié)點的 CPU 和內存,還可以方便我們后續(xù)的擴容和縮容
在我們擴縮容的時候,基本單位也是 pod,K8S 中不能對單個容器進行擴縮容
如果將前端和后臺都放到同一個pod 中,那么我們擴容或者縮容時候,那么相應的容器將會成倍的增加或減少
前端和后臺的擴容縮容也會是完全不同的需求,并不能直接簡單粗暴的干就完了
如果我們把上述的前端和后臺這樣來部署是不推薦的:
全部放到同一個 pod 的同一個 容器中
通一個 pod 中部署 2 個容器,分別部署前端和后臺

推薦的做法是
在 2 個 pod 中分別開 1 個容器,各自部署 前端,后臺程序

我們實際工作中面臨是否需要在同一個 pod 中啟多個容器的時候,我們可以思考一下這樣的問題
這些容器放在一起運行是必須的嗎?是否可以拆分放在不同的主機上運行
這些程序是代表一個整體?還是相互獨立的
對于擴容和鎖容,是需要一起進行,還是分別進行?
這些問題,咱們之后可以解決一下
今天就到這里,學習所得,若有偏差,還請斧正
歡迎點贊,關注,收藏
朋友們,你的支持和鼓勵,是我堅持分享,提高質量的動力

好了,本次就到這里
技術是開放的,我們的心態(tài),更應是開放的。擁抱變化,向陽而生,努力向前行。
我是阿兵云原生,歡迎點贊關注收藏,下次見~