k8s之init container與應用容器的區別
簡單的說明一下二者的區別: 算法
- 他們僅運行一次,成功後就會退出。
- init container的運行方式與應用容器不一樣,它們必須先於應用容器執行完成,當設置了多個init container時,將按順序逐個運行,而且只有前一個initcontainer運行成功後才能運行後一個init container。當全部initcontainer都成功運行後,kubernetes纔會初始化pod的各類信息,並開始建立和運行應用容器。
- 在init container的定義中也能夠設置資源限制、volume的使用和安全策略等等.但資源限制的設置與應用容器不一樣:
- 若是多個init container都定義了資源請求/資源限制,則取最大的值做爲全部initcontainer的資源請求值/資源限制值。
- pod的有效資源請求值/資源限制值取如下兩者中的較大值:
- 全部應用容器的資源請求值/限制值之和
- init container的有效資源請求值/限制值
- 調度算法將基於pod的有效資源請求值/限制值進行計算,也就是說initcontainer能夠爲初始化操做預留系統資源,即便後續應用容器無須使用這些資源。
- pod的有效QoS等級適用於init container和應用容器。
- 資源配額和限制將根據pod的有效資源請求/限制,與調度機制一致。
- init container不能設置readinessProbe探針,由於必須在它們成功運行之後才能繼續運行pod中定義的普通容器。將pod重啓時,initcontainer將會從新運行,常見的pod重啓場景以下:
- init container的鏡像被更新時,initcontainer將從新運行,致使pod重啓,僅更新應用容器的鏡像只會使得應用容器被重啓。
- pod的infrastructure容器更新時,pod將會重啓。
- 或pod中的全部應用容器都終止了,而且RestartPolicy=Always時,則pod將會重啓。
歡迎關注本站公眾號,獲取更多信息