人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

詳解kubernetes pod的編排和生命周期

發(fā)布日期:2021-12-22 19:45 | 文章來源:源碼之家

K8S Master基本架構(gòu)

K8S的集群運行依賴Master節(jié)點和Node節(jié)點的通信,為了更好的理解第4部分的Pod生命周期,我們這里先給出K8S Master的簡單架構(gòu)圖,后續(xù)的文章中,我們會分析Master、Node和Pod之間的關(guān)系。

Master的架構(gòu)圖:

其中:

API Server提供了HTTP Rest接口,它是k8s中的所有資源增刪改查的唯一入口,也是集群控制的入口;

Scheduler是負責(zé)資源調(diào)度的進程;

Controller Manager是所有資源對象的自動化控制中心;

Etcd提供資源對象的數(shù)據(jù)保存服務(wù)

其中每個組件都有很多知識點,這里我們只要有個宏觀的印象就可以了,后續(xù)的文章中,我們會逐一分析。

Pod的編排思想

上一篇文章末尾,我們提到了應(yīng)用程序往k8s搬遷過程中的注意事項。這里重申一下,當我們想要把虛擬機上的應(yīng)用程序搬遷到k8s中時,我們需要用Pod來構(gòu)建我們應(yīng)用程序模塊。這個時候,比較重要的一點是劃分我們應(yīng)用程序模塊,因為容器和虛擬機的設(shè)計模式不同,但是為了更好的理解和對比這二者的關(guān)系,我們可以設(shè)想下面的對應(yīng)關(guān)系:

k8s-----操作系統(tǒng)

Pod----虛擬機

容器----進程

1、k8s相當于物理機的操作系統(tǒng),k8s管理Pod相當于物理機的操作系統(tǒng)管理虛擬機

2、Pod相當于虛擬機,Pod里面可能包含多個容器,對應(yīng)于虛擬機中的很多進程

3、容器相當于進程,容器的本質(zhì),其實就是一個進程。

有了這樣的概念,去理解Pod可能會更加形象。再說回我們的應(yīng)用程序遷移,假設(shè)我們的應(yīng)用程序存在:

web服務(wù)、日志分析、MySQL數(shù)據(jù)庫

三個關(guān)鍵的模塊,其中:

web服務(wù)和日志分析存在"超親密關(guān)系",因為日志分析模塊要消費web服務(wù)模塊產(chǎn)生的日志,所以他們必須部署在同一個服務(wù)器上。反之、web服務(wù)和MySQL數(shù)據(jù)庫之間完全可以通過TCP-IP的方式來訪問,就沒有必要部署在同一臺機器上。如果我們用容器運行這個應(yīng)用,那么web服務(wù)需要和日志分析模塊打包在同一個Pod中,而MySQL數(shù)據(jù)庫服務(wù)單獨部署在一個Pod中即可,我們的應(yīng)用程序遷移到k8s中,可能就是下面的結(jié)構(gòu):

將不同的進程或者任務(wù),編排在同一個Pod中,這本質(zhì)上,就是Pod的一種編排思想

Pod對象的屬性和容器的屬性?

從上面的分析中不難看出,容器是隸屬于Pod中的一個元素,從yaml文件上看,容器就是Pod的整個yaml文件中的一個字段?,F(xiàn)在我們看看Pod和容器有哪些重要屬性。

先看Pod的屬性:

1、凡是調(diào)度、網(wǎng)絡(luò)、存儲、安全相關(guān)的屬性,基本都是Pod相關(guān)的。

調(diào)度,自然不用說,Pod是k8s的最小調(diào)度單元;網(wǎng)絡(luò),同一個Pod中的容器共享Pod的網(wǎng)絡(luò);存儲,可以通過Pod掛載卷的方式讓不同的容器共享Pod的存儲;安全,也是以Pod為維度來控制的。

2、凡是跟容器的Linux Namespace相關(guān)的屬性,也是Pod級別的。

Pod的設(shè)計初衷,就是要容器之間共享Namespace。

3、凡是Pod中的容器要共享宿主機的Namespace,也一定是Pod級別的。

這個更加容易理解,因為Pod要共享主機的Namespace,那么Pod中的容器必然是要共享相同的Namespace,所以這個設(shè)置一定是Pod級別的。

再看Container的2個重要屬性:

1、ImagePullPolicy:這個屬性定義了鏡像拉取的策略,它的默認值是always,也就是每次創(chuàng)建Pod都拉取一次鏡像,它還有2個其他的取值,分別是never和ifnotpresent,這兩個比較容易理解,一種是從來不拉取鏡像,一種是只有在不存在鏡像的時候才拉取鏡像。這里需要注意一點,如果我們的版本號配置的是latest這種的,那么ImagePullPolicy會被默認值always。

2、Lifecycle:顧名思義,它是在容器的生命周期中執(zhí)行某些動作,它有兩個常見的參數(shù),分別是postStart和preStop,就是在容器開始后或者容器結(jié)束前執(zhí)行的一個特定操作。

Pod的生命周期

Pod的生命周期,主要體現(xiàn)在Pod的API的status部分,Pod的生命周期從開始到結(jié)束包含下面的幾個過程:

1、Pending,表示Pod的yaml文件已經(jīng)交給k8s,并且保存在etcd(etcd是k8s中的元信息庫)中了。但是它由于調(diào)度不成功等原因沒有被創(chuàng)建。

2、Running,這個詞語具有迷惑性,它表示Pod已經(jīng)調(diào)度成功,跟一臺具體的節(jié)點服務(wù)器綁定,Pod中的容器不一定全部都正常運行了,但是至少有一個在運行。

3、Succeeded,這個狀態(tài)意味著所有的容器都啟動完畢,并且已經(jīng)退出。

4、Failed,這個很好理解,就是Pod中的容器至少有一個以非0狀態(tài)退出,也就是異常退出了。

5、Unknow。這是一個異常狀態(tài),表示當前Pod的狀態(tài)不能正常的匯報給kube-apiserver了,這可能是主從節(jié)點之間的通信有問題。

如下所示為一個狀態(tài)為running的Pod

[root@VM-16-13-centos~]#kubectlgetpod
NAMEREADYSTATUSRESTARTSAGE
mysql-pd7jr1/1Running0118d
myweb-60r221/1Running080d
[root@VM-16-13-centos~]#
[root@VM-16-13-centos~]#kubectlgetpodmysql-pd7jr-oyaml
apiVersion:v1
kind:Pod
metadata:
...
spec:
...
status:
...
hostIP:127.0.0.1
phase:Running
podIP:172.17.0.2
startTime:2020-11-20T09:01:39Z

以上就是詳解kubernetes pod的編排和生命周期的詳細內(nèi)容,更多關(guān)于kubernetes pod的編排和生命周期的資料請關(guān)注本站其它相關(guān)文章!

版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部