這篇文章給大家介紹k8s中的Init 容器,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供郯城網(wǎng)站建設(shè)、郯城做網(wǎng)站、郯城網(wǎng)站設(shè)計、郯城網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、郯城企業(yè)網(wǎng)站模板建站服務(wù),十年郯城做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
它是一種專用的容器,在應(yīng)用容器啟動之前運行,并包括一些應(yīng)用鏡像中不存在的實用工具和安裝腳本。
Pod 能夠具有多個容器,應(yīng)用運行在容器里面,但是它也可能有一個或多個先于應(yīng)用容器啟動的 Init 容器。
Init 容器與普通的容器非常像,除了如下兩點:
它們總是運行到完成。
每個都必須在下一個啟動之前成功完成。
如果 Pod 的 Init 容器失敗,Kubernetes 會不斷地重啟該 Pod,直到 Init 容器成功為止。然而,如果 Pod 對應(yīng)的 restartPolicy
值為 Never,它不會重新啟動。
指定容器為 Init 容器,需要在 PodSpec 中添加 initContainers
字段,以 v1.Container 類型對象的 JSON 數(shù)組的形式,還有 app 的 containers
數(shù)組。 Init 容器的狀態(tài)在 status.initContainerStatuses
字段中以容器狀態(tài)數(shù)組的格式返回(類似 status.containerStatuses
字段)。
Init 容器支持應(yīng)用容器的全部字段和特性,包括資源限制、數(shù)據(jù)卷和安全設(shè)置。 然而,Init 容器對資源請求和限制的處理稍有不同,在下面 資源 處有說明。 而且 Init 容器不支持 Readiness Probe,因為它們必須在 Pod 就緒之前運行完成。
如果為一個 Pod 指定了多個 Init 容器,那些容器會按順序一次運行一個。 每個 Init 容器必須運行成功,下一個才能夠運行。 當(dāng)所有的 Init 容器運行完成時,Kubernetes 初始化 Pod 并像平常一樣運行應(yīng)用容器。
因為 Init 容器具有與應(yīng)用容器分離的單獨鏡像,它們的啟動相關(guān)代碼具有如下優(yōu)勢:
它們可以包含并運行實用工具,處于安全考慮,是不建議在應(yīng)用容器鏡像中包含這些實用工具的。
它們可以包含使用工具和定制化代碼來安裝,但是不能出現(xiàn)在應(yīng)用鏡像中。例如,創(chuàng)建鏡像沒必要 FROM
另一個鏡像,只需要在安裝過程中使用類似 sed
、 awk
、 python
或 dig
這樣的工具。
應(yīng)用鏡像可以分離出創(chuàng)建和部署的角色,而沒有必要聯(lián)合它們構(gòu)建一個單獨的鏡像。
它們使用 Linux Namespace,所以對應(yīng)用容器具有不同的文件系統(tǒng)視圖。因此,它們能夠具有訪問 Secret 的權(quán)限,而應(yīng)用容器不能夠訪問。
它們在應(yīng)用容器啟動之前運行完成,然而應(yīng)用容器并行運行,所以 Init 容器提供了一種簡單的方式來阻塞或延遲應(yīng)用容器的啟動,直到滿足了一組先決條件。
關(guān)于k8s中的Init 容器就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。