国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Kubernetes pod里一個(gè)特殊的容器:pause-amd64

amuqiao / 1438人閱讀

摘要:命名空間的一個(gè)總體目標(biāo)是支持輕量級(jí)虛擬化工具的實(shí)現(xiàn),機(jī)制本身對(duì)外提供一組進(jìn)程,這組進(jìn)程自己會(huì)認(rèn)為它們就是系統(tǒng)唯一存在的進(jìn)程。進(jìn)程注冊(cè)的信號(hào)處理函數(shù)里,調(diào)用另一個(gè)系統(tǒng)調(diào)用來(lái)獲得子進(jìn)程終止的原因。

大家在使用Docker容器或者Kubernetes時(shí),遇到過(guò)這個(gè)容器么?gcr.io/google_containers/pause-amd64

docker ps的命令返回的結(jié)果:

[root@k8s-minion1 kubernetes]# docker ps |grep pause
c3026adee957        gcr.io/google_containers/pause-amd64:3.0           "/pause"                 22 minutes ago      Up 22 minutes                           k8s_POD.d8dbe16c_redis-master-343230949-04glm_default_ce3f60a9-095d-11e7-914b-0a77ecd65f3e_66c108d5
202df18d636e        gcr.io/google_containers/pause-amd64:3.0           "/pause"                 24 hours ago        Up 24 hours                             k8s_POD.d8dbe16c_kube-proxy-js0z0_kube-system_2866cfc2-0891-11e7-914b-0a77ecd65f3e_c8e1a667
072d3414d33a        gcr.io/google_containers/pause-amd64:3.0           "/pause"                 24 hours ago        Up 24 hours                             k8s_POD.d8dbe16c_kube-flannel-ds-tsps5_default_2866e3fb-0891-11e7-914b-0a77ecd65f3e_be4b719e
[root@k8s-minion1 kubernetes]#

Kubernetes的官網(wǎng)解釋:

it"s part of the infrastructure. This container is started first in all Pods to setup the network for the Pod.

意思是:pause-amd64是Kubernetes基礎(chǔ)設(shè)施的一部分,Kubernetes管理的所有pod里,pause-amd64容器是第一個(gè)啟動(dòng)的,用于實(shí)現(xiàn)Kubernetes集群里pod之間的網(wǎng)絡(luò)通訊。

對(duì)這個(gè)特殊容器感興趣的朋友,可以閱讀其源代碼:
https://github.com/kubernetes...

我們查看這個(gè)pause-amd64鏡像的dockerfile,發(fā)現(xiàn)實(shí)現(xiàn)很簡(jiǎn)單,基于一個(gè)空白鏡像開(kāi)始:

FROM scratch
ARG ARCH
ADD bin/pause-${ARCH} /pause
ENTRYPOINT ["/pause"]

ARG指令用于指定在執(zhí)行docker build命令時(shí)傳遞進(jìn)去的參數(shù)。

這個(gè)pause container是用C語(yǔ)言寫(xiě)的:

https://www.ianlewis.org/en/a...

在運(yùn)行的Kubernetes node上運(yùn)行docker ps,能發(fā)現(xiàn)這些pause container:

pause container作為pod里其他所有container的parent container,主要有兩個(gè)職責(zé):

是pod里其他容器共享Linux namespace的基礎(chǔ)

扮演PID 1的角色,負(fù)責(zé)處理僵尸進(jìn)程

這兩點(diǎn)我會(huì)逐一細(xì)說(shuō)。在Linux里,當(dāng)父進(jìn)程fork一個(gè)新進(jìn)程時(shí),子進(jìn)程會(huì)從父進(jìn)程繼承namespace。目前Linux實(shí)現(xiàn)了六種類型的namespace,每一個(gè)namespace是包裝了一些全局系統(tǒng)資源的抽象集合,這一抽象集合使得在進(jìn)程的命名空間中可以看到全局系統(tǒng)資源。命名空間的一個(gè)總體目標(biāo)是支持輕量級(jí)虛擬化工具container的實(shí)現(xiàn),container機(jī)制本身對(duì)外提供一組進(jìn)程,這組進(jìn)程自己會(huì)認(rèn)為它們就是系統(tǒng)唯一存在的進(jìn)程。

在Linux里,父進(jìn)程fork的子進(jìn)程會(huì)繼承父進(jìn)程的命名空間。與這種行為相反的一個(gè)系統(tǒng)命令就是unshare:

再來(lái)聊聊pause容器如何處理僵尸進(jìn)程的。

Pause容器內(nèi)其實(shí)就運(yùn)行了一個(gè)非常簡(jiǎn)單的進(jìn)程,其邏輯可以從前面提到的Pause github倉(cāng)庫(kù)上找到:

static void sigdown(int signo) {
  psignal(signo, "Shutting down, got signal");
  exit(0);
}

static void sigreap(int signo) {
  while (waitpid(-1, NULL, WNOHANG) > 0);
}

int main() {
  if (getpid() != 1)
    /* Not an error because pause sees use outside of infra containers. */
    fprintf(stderr, "Warning: pause should be the first process
");

  if (sigaction(SIGINT, &(struct sigaction){.sa_handler = sigdown}, NULL) < 0)
    return 1;
  if (sigaction(SIGTERM, &(struct sigaction){.sa_handler = sigdown}, NULL) < 0)
    return 2;
  if (sigaction(SIGCHLD, &(struct sigaction){.sa_handler = sigreap,
                                             .sa_flags = SA_NOCLDSTOP},
                NULL) < 0)
    return 3;

  for (;;)
    pause();
  fprintf(stderr, "Error: infinite loop terminated
");
  return 42;
}

這個(gè)c語(yǔ)言實(shí)現(xiàn)的進(jìn)程,核心代碼就28行:

其中第24行里一個(gè)無(wú)限循環(huán)for(;;), 至此大家能看出來(lái)pause容器名稱的由來(lái)了吧?

這個(gè)無(wú)限循環(huán)里執(zhí)行的是一個(gè)系統(tǒng)調(diào)用pause,

因此pause容器大部分時(shí)間都在沉睡,等待有信號(hào)將其喚醒。

接收什么信號(hào)呢?

一旦收到SIGCHLD信號(hào),pause進(jìn)程就執(zhí)行注冊(cè)的sigreap函數(shù)。

看下SIGCHLD信號(hào)的幫助:

SIGCHLD,在一個(gè)進(jìn)程正常終止或者停止時(shí),將SIGCHLD信號(hào)發(fā)送給其父進(jìn)程,按系統(tǒng)默認(rèn)將忽略此信號(hào),如果父進(jìn)程希望被告知其子系統(tǒng)的這種狀態(tài),則應(yīng)捕捉此信號(hào)。

pause進(jìn)程注冊(cè)的信號(hào)處理函數(shù)sigreap里,調(diào)用另一個(gè)系統(tǒng)調(diào)用waitpid來(lái)獲得子進(jìn)程終止的原因。

希望這篇文章對(duì)大家理解Kubernetes里的pause容器有所幫助。感謝閱讀。

要獲取更多Jerry的原創(chuàng)文章,請(qǐng)關(guān)注公眾號(hào)"汪子熙":

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/33105.html

相關(guān)文章

  • Kubernetes pod一個(gè)特殊容器pause-amd64

    摘要:命名空間的一個(gè)總體目標(biāo)是支持輕量級(jí)虛擬化工具的實(shí)現(xiàn),機(jī)制本身對(duì)外提供一組進(jìn)程,這組進(jìn)程自己會(huì)認(rèn)為它們就是系統(tǒng)唯一存在的進(jìn)程。進(jìn)程注冊(cè)的信號(hào)處理函數(shù)里,調(diào)用另一個(gè)系統(tǒng)調(diào)用來(lái)獲得子進(jìn)程終止的原因。 大家在使用Docker容器或者Kubernetes時(shí),遇到過(guò)這個(gè)容器么?gcr.io/google_containers/pause-amd64 showImg(https://segmentf...

    李世贊 評(píng)論0 收藏0
  • Kubernetes pod一個(gè)特殊容器pause-amd64

    摘要:命名空間的一個(gè)總體目標(biāo)是支持輕量級(jí)虛擬化工具的實(shí)現(xiàn),機(jī)制本身對(duì)外提供一組進(jìn)程,這組進(jìn)程自己會(huì)認(rèn)為它們就是系統(tǒng)唯一存在的進(jìn)程。進(jìn)程注冊(cè)的信號(hào)處理函數(shù)里,調(diào)用另一個(gè)系統(tǒng)調(diào)用來(lái)獲得子進(jìn)程終止的原因。 大家在使用Docker容器或者Kubernetes時(shí),遇到過(guò)這個(gè)容器么?gcr.io/google_containers/pause-amd64 showImg(https://segmentf...

    cyixlq 評(píng)論0 收藏0
  • 基于 Docker for MAC Kubernetes 本地環(huán)境搭建與應(yīng)用部署

    摘要:基于的本地環(huán)境搭建與應(yīng)用部署歸納于分布式容器與編排,參考了一文,更多或者相關(guān)資料參閱。最后我們還可以用與命令來(lái)刪除應(yīng)用 showImg(https://segmentfault.com/img/remote/1460000006760432); 基于 Docker for MAC 的 Kubernetes 本地環(huán)境搭建與應(yīng)用部署歸納于分布式容器與編排,參考了 Docker + Kub...

    SKYZACK 評(píng)論0 收藏0
  • 基于 Docker for MAC Kubernetes 本地環(huán)境搭建與應(yīng)用部署

    摘要:基于的本地環(huán)境搭建與應(yīng)用部署歸納于分布式容器與編排,參考了一文,更多或者相關(guān)資料參閱。最后我們還可以用與命令來(lái)刪除應(yīng)用 showImg(https://segmentfault.com/img/remote/1460000006760432); 基于 Docker for MAC 的 Kubernetes 本地環(huán)境搭建與應(yīng)用部署歸納于分布式容器與編排,參考了 Docker + Kub...

    jone5679 評(píng)論0 收藏0
  • mac安裝kubernetes并運(yùn)行echoserver

    摘要:序上次雖然寫(xiě)了兩篇在裝的,但是僅僅限于初步安裝,這次再補(bǔ)上跑個(gè),正好也趕上阿里云有相關(guān)鏡像,于是這里再次記錄下。 序 上次雖然寫(xiě)了兩篇在mac裝kubernetes的,但是僅僅限于初步安裝,這次再補(bǔ)上跑個(gè)demo,正好也趕上阿里云有相關(guān)鏡像,于是這里再次記錄下。 安裝minikube curl -Lo minikube https://storage.googleapis.com/mi...

    wind5o 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

amuqiao

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<