您好,登錄后才能下訂單哦!
這篇文章給大家介紹k8s中的Init 容器,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
它是一種專用的容器,在應用容器啟動之前運行,并包括一些應用鏡像中不存在的實用工具和安裝腳本。
Pod 能夠具有多個容器,應用運行在容器里面,但是它也可能有一個或多個先于應用容器啟動的 Init 容器。
Init 容器與普通的容器非常像,除了如下兩點:
它們總是運行到完成。
每個都必須在下一個啟動之前成功完成。
如果 Pod 的 Init 容器失敗,Kubernetes 會不斷地重啟該 Pod,直到 Init 容器成功為止。然而,如果 Pod 對應的 restartPolicy
值為 Never,它不會重新啟動。
指定容器為 Init 容器,需要在 PodSpec 中添加 initContainers
字段,以 v1.Container 類型對象的 JSON 數組的形式,還有 app 的 containers
數組。 Init 容器的狀態在 status.initContainerStatuses
字段中以容器狀態數組的格式返回(類似 status.containerStatuses
字段)。
Init 容器支持應用容器的全部字段和特性,包括資源限制、數據卷和安全設置。 然而,Init 容器對資源請求和限制的處理稍有不同,在下面 資源 處有說明。 而且 Init 容器不支持 Readiness Probe,因為它們必須在 Pod 就緒之前運行完成。
如果為一個 Pod 指定了多個 Init 容器,那些容器會按順序一次運行一個。 每個 Init 容器必須運行成功,下一個才能夠運行。 當所有的 Init 容器運行完成時,Kubernetes 初始化 Pod 并像平常一樣運行應用容器。
因為 Init 容器具有與應用容器分離的單獨鏡像,它們的啟動相關代碼具有如下優勢:
它們可以包含并運行實用工具,處于安全考慮,是不建議在應用容器鏡像中包含這些實用工具的。
它們可以包含使用工具和定制化代碼來安裝,但是不能出現在應用鏡像中。例如,創建鏡像沒必要 FROM
另一個鏡像,只需要在安裝過程中使用類似 sed
、 awk
、 python
或 dig
這樣的工具。
應用鏡像可以分離出創建和部署的角色,而沒有必要聯合它們構建一個單獨的鏡像。
它們使用 Linux Namespace,所以對應用容器具有不同的文件系統視圖。因此,它們能夠具有訪問 Secret 的權限,而應用容器不能夠訪問。
它們在應用容器啟動之前運行完成,然而應用容器并行運行,所以 Init 容器提供了一種簡單的方式來阻塞或延遲應用容器的啟動,直到滿足了一組先決條件。
關于k8s中的Init 容器就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。