k8s中PAUSE容器與init容器比較 local卷與hostpath卷比較

目錄

一、PAUSE容器與INIT容器比較

1. Pause 容器

作用

特點

示例

2. Init 容器

作用

特點

示例

3. Pause 容器 vs Init 容器

4. 總結

這兩個哪個先啟動呢?

詳細啟動順序

為什么 Pause 容器最先啟動?

示例

總結

二、local卷與hostpath卷

1. local 卷

定義

特點

配置示例

2. hostPath 卷

定義

特點

配置示例

3. local 卷 vs hostPath 卷

4. 選擇建議


一、PAUSE容器與INIT容器比較

在 Kubernetes 中,Pause 容器Init 容器 是兩種特殊類型的容器,它們在 Pod 的生命周期中扮演不同的角色。以下是它們的詳細說明和區別:


1. Pause 容器

作用

  • 基礎設施容器: Pause 容器是 Kubernetes 為每個 Pod 創建的一個基礎設施容器,也稱為 "sandbox 容器"。

  • 共享網絡和存儲命名空間: Pause 容器的主要作用是持有 Pod 的網絡命名空間(Network Namespace)和存儲命名空間(Volume Namespace),其他容器(用戶容器)會共享這些命名空間。

  • 生命周期管理: Pause 容器的生命周期與 Pod 綁定,當 Pod 啟動時,Pause 容器首先啟動;當 Pod 刪除時,Pause 容器最后退出。

特點

  • 輕量級: Pause 容器通常是一個非常小的鏡像(如 k8s.gcr.io/pause),只包含一個簡單的進程,幾乎不占用資源。

  • 不可見: 用戶通常不會直接與 Pause 容器交互,它由 Kubernetes 自動管理。

  • 穩定性: Pause 容器為 Pod 提供了穩定的網絡和存儲環境,確保用戶容器的正常運行。

示例

假設有一個 Pod 包含兩個容器(Container A 和 Container B),它們的結構如下:

  1. Pause 容器首先啟動,創建網絡和存儲命名空間。

  2. Container A 和 Container B 啟動,共享 Pause 容器的網絡和存儲命名空間。


2. Init 容器

作用

  • 初始化任務: Init 容器用于在 Pod 的主容器(Main Containers)啟動之前執行一些初始化任務,例如:

    • 下載配置文件。

    • 等待依賴服務啟動。

    • 初始化數據庫或存儲。

  • 順序執行: Init 容器按照定義的順序依次執行,前一個 Init 容器成功完成后,才會啟動下一個 Init 容器。

  • 與主容器隔離: Init 容器和主容器是隔離的,它們的鏡像、命令和環境變量可以完全不同。

特點

  • 任務導向: Init 容器專注于完成特定的初始化任務,任務完成后容器會退出。

  • 生命周期短: Init 容器在完成任務后就會退出,不會被重啟。

  • 失敗處理: 如果 Init 容器失敗,Pod 會根據 restartPolicy 決定是否重啟 Init 容器。

示例

以下是一個包含 Init 容器的 Pod 配置示例:

apiVersion: v1
kind: Pod
metadata:name: example-init-pod
spec:containers:- name: main-containerimage: busyboxcommand: ["sh", "-c", "echo Main container is running && sleep 3600"]initContainers:- name: init-container-1image: busyboxcommand: ["sh", "-c", "echo Initializing... && sleep 5"]- name: init-container-2image: busyboxcommand: ["sh", "-c", "echo Setting up... && sleep 5"]

在這個例子中:

  1. init-container-1 首先啟動并運行 5 秒。

  2. init-container-1 完成后,init-container-2 啟動并運行 5 秒。

  3. 兩個 Init 容器都完成后,main-container 啟動。


3. Pause 容器 vs Init 容器

特性Pause 容器Init 容器
作用提供 Pod 的網絡和存儲命名空間執行初始化任務
生命周期與 Pod 生命周期一致在 Pod 啟動前運行,完成后退出
可見性對用戶透明,不可見用戶可定義和配置
運行順序最先啟動,最后退出在主容器之前按順序運行
鏡像通常是 k8s.gcr.io/pause用戶自定義
資源占用非常輕量,幾乎不占用資源根據任務需求占用資源

4. 總結

  • Pause 容器 是 Kubernetes 為 Pod 提供的基礎設施容器,負責管理網絡和存儲命名空間,用戶通常不需要直接操作它。

  • Init 容器 是用戶定義的容器,用于在主容器啟動前執行初始化任務,確保 Pod 啟動時環境已經準備就緒。

這兩個哪個先啟動呢?

在 Kubernetes 中,Pause 容器Init 容器 的啟動順序是明確的:

  1. Pause 容器 最先啟動。

  2. Init 容器 在 Pause 容器啟動后運行。

  3. 主容器 在 Init 容器完成后啟動。


詳細啟動順序

  1. Pause 容器啟動:

    • 當 Kubernetes 創建一個 Pod 時,首先會啟動 Pause 容器。

    • Pause 容器負責創建并持有 Pod 的網絡命名空間(Network Namespace)和存儲命名空間(Volume Namespace)。

    • Pause 容器的生命周期與 Pod 綁定,它會一直運行,直到 Pod 被刪除。

  2. Init 容器啟動:

    • 在 Pause 容器啟動后,Kubernetes 會按照順序啟動 Init 容器。

    • Init 容器用于執行初始化任務(如下載配置文件、等待依賴服務等)。

    • 每個 Init 容器必須成功完成后,才會啟動下一個 Init 容器。如果某個 Init 容器失敗,Pod 會根據 restartPolicy 決定是否重試。

  3. 主容器啟動:

    • 當所有 Init 容器成功完成后,Kubernetes 會啟動 Pod 的主容器(Main Containers)。

    • 主容器是 Pod 中運行實際業務邏輯的容器。


為什么 Pause 容器最先啟動?

  • Pause 容器的作用是為 Pod 提供穩定的網絡和存儲命名空間。

  • 在 Init 容器和主容器啟動之前,必須確保這些命名空間已經創建并準備好。

  • 因此,Pause 容器必須最先啟動。


示例

以下是一個 Pod 的啟動順序示例:

  1. Pause 容器啟動:

    • 創建網絡和存儲命名空間。

  2. Init 容器啟動:

    • init-container-1 啟動并完成任務。

    • init-container-2 啟動并完成任務。

  3. 主容器啟動:

    • main-container 啟動并運行業務邏輯。

對應的 YAML 配置:

apiVersion: v1
kind: Pod
metadata:name: example-pod
spec:containers:- name: main-containerimage: busyboxcommand: ["sh", "-c", "echo Main container is running && sleep 3600"]initContainers:- name: init-container-1image: busyboxcommand: ["sh", "-c", "echo Initializing... && sleep 5"]- name: init-container-2image: busyboxcommand: ["sh", "-c", "echo Setting up... && sleep 5"]

總結

  • Pause 容器 最先啟動,為 Pod 提供網絡和存儲命名空間。

  • Init 容器 在 Pause 容器之后啟動,用于執行初始化任務。

  • 主容器 在 Init 容器完成后啟動。

二、local卷與hostpath卷

在 Kubernetes 中,local 卷和 hostPath 卷是兩種用于將節點(Node)上的存儲資源掛載到 Pod 中的卷類型。它們都使用節點上的本地存儲,但在設計、用途和管理方式上有顯著區別。以下是對它們的詳細介紹和比較:


1. local 卷

定義

local 卷是一種持久化存儲卷(PersistentVolume, PV),它將節點上的本地存儲路徑掛載到 Pod 中。local 卷通常用于需要高性能和低延遲的場景。

特點

  1. 持久化存儲:

    • 數據在 Pod 刪除后仍然保留,適合需要持久化存儲的場景。

  2. 節點綁定:

    • local 卷與特定節點綁定,Pod 必須調度到該節點才能使用該卷。

  3. 靜態配置:

    • 需要管理員預先在節點上創建存儲路徑,并在 Kubernetes 中定義 PersistentVolume(PV)。

  4. 高性能:

    • 由于使用本地存儲,訪問速度快,延遲低。

  5. 適用場景:

    • 高性能數據庫(如 MySQL、PostgreSQL)。

    • 需要持久化存儲的應用(如日志存儲、緩存)。

配置示例

apiVersion: v1
kind: PersistentVolume
metadata:name: example-local-pv
spec:capacity:storage: 10GiaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: local-storagelocal:path: /mnt/disks/ssd1  # 節點上的本地路徑nodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node-1  # 綁定到特定節點

2. hostPath 卷

定義

hostPath 卷將節點上的文件系統路徑直接掛載到 Pod 中。它通常用于臨時存儲或訪問節點上的特定文件。

特點

  1. 非持久化存儲:

    • 數據與節點綁定,節點故障時數據可能丟失。

  2. 節點綁定:

    • hostPath 卷與特定節點綁定,Pod 必須調度到該節點才能使用該卷。

  3. 動態配置:

    • 不需要預先定義 PV,直接在 Pod 中指定節點路徑即可。

  4. 高性能:

    • 由于使用本地存儲,訪問速度快,延遲低。

  5. 適用場景:

    • 訪問節點上的日志文件或配置文件。

    • 開發和測試環境中的臨時存儲。

配置示例

apiVersion: v1
kind: Pod
metadata:name: test-hostpath
spec:containers:- name: test-containerimage: busyboxvolumeMounts:- mountPath: /mnt/dataname: test-volumevolumes:- name: test-volumehostPath:path: /data  # 節點上的路徑type: Directory  # 路徑類型(可以是文件、目錄等)

3. local 卷 vs hostPath 卷

特性local 卷hostPath 卷
持久性數據持久,Pod 刪除后保留數據非持久,節點故障時可能丟失
節點綁定綁定特定節點,Pod 需調度到該節點綁定特定節點,Pod 需調度到該節點
配置方式靜態配置,需預先定義 PV動態配置,直接在 Pod 中指定路徑
性能高性能,低延遲高性能,低延遲
適用場景高性能、持久化存儲需求臨時存儲、訪問節點文件
管理復雜度較高,需管理員預先配置較低,直接在 Pod 中配置
數據安全性較高,數據持久化較低,數據與節點綁定
示例場景數據庫、日志存儲日志收集、配置文件訪問

4. 選擇建議

  • local 卷:

    • 適合需要持久化存儲和高性能的場景。

    • 適用于生產環境中的數據庫、緩存等應用。

    • 需要管理員預先配置和管理。

  • hostPath 卷:

    • 適合臨時存儲或訪問節點文件的場景。

    • 適用于開發、測試環境或日志收集等任務。

    • 配置簡單,但數據安全性較低。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/72765.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72765.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/72765.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue3 + TS組件封裝指南

在 Vue 3 TypeScript 中封裝組件時,需要注意以下幾點: 1. Props 定義 使用 defineProps 或 PropType 定義組件的 props,并為其添加類型。 示例: import { defineComponent, PropType } from vue;export default defineComponen…

mybatis_plus的樂觀鎖

樂觀鎖:總是假設最好的情況,每次讀取數據時認為數據不會被修改(即不加鎖),當進行更新操作時,會判斷這條數據是否被修改,未被修改,則進行更新操作。若被修改,則數據更新失…

Redis系列:深入理解緩存穿透、緩存擊穿、緩存雪崩及其解決方案

在使用Redis作為緩存系統時,我們經常會遇到“緩存穿透”、“緩存擊穿”和“緩存雪崩”等問題,這些問題一旦出現,會嚴重影響應用性能甚至造成服務不可用。因此,理解這些問題的產生原因和解決方案非常重要。 本文將全面講解緩存穿透…

AT指令集-NBIOT

是什么? 窄帶物聯網(Narrow Band Internet of Things, NB-IoT)成為萬物互聯網絡的一個重要分支支持低功耗設備在廣域網的蜂窩數據連接,也被叫作低功耗廣域網(LPWAN)NB-IoT支持待機時間長、對網絡連接要求較高設備的高效連接NB-Io…

CBNet:一種用于目標檢測的復合骨干網架構之論文閱讀

摘要 現代頂級性能的目標檢測器在很大程度上依賴于骨干網絡,而骨干網絡的進步通過探索更高效的網絡結構帶來了持續的性能提升。本文提出了一種新穎且靈活的骨干框架——CBNet,該框架利用現有的開源預訓練骨干網絡,在預訓練-微調范式下構建高…

c++中字符串string常用的函數

在C中&#xff0c; std::string 類有許多常用函數&#xff0c;以下是一些常見的&#xff1a; 1. length() 或 size() &#xff1a;返回字符串的長度&#xff08;字符個數&#xff09;&#xff0c;二者功能相同。例如&#xff1a; #include <iostream> #include <str…

《保險科技》

自己在保險行業工作很多年&#xff0c;只是接觸了一些數據的內容&#xff0c;對于保險業務的知識了解的很少&#xff0c;想通過這本書補充一下&#xff0c;但是發現這本書就是一些知識的拼接。 先將保險的歷史&#xff0c;后講保險的定義&#xff0c;然后就是吹噓保險行業和互聯…

藍橋杯第13屆真題2

由硬件框圖可以知道我們要配置LED 和按鍵 一.LED 先配置LED的八個引腳為GPIO_OutPut&#xff0c;鎖存器PD2也是&#xff0c;然后都設置為起始高電平&#xff0c;生成代碼時還要去解決引腳沖突問題 二.按鍵 按鍵配置&#xff0c;由原理圖按鍵所對引腳要GPIO_Input 生成代碼&a…

java之IP 工具類

java程序一直需要獲取物理機的ip&#xff0c;寫了一個ip的工具類&#xff0c;感覺日常所需夠了 import javax.servlet.http.HttpServletRequest; import java.net.InetAddress; import java.net.UnknownHostException;/*** IP 工具類*/ public class IpUtil {public static St…

貪心算法作業參考:P1106,P4995,P5019

貪心算法作業參考&#xff1a;P1106&#xff0c;P4995&#xff0c;P5019 P1106 刪數問題 作業批注&#xff1a; 原作業提交&#xff0c;是刪除k個最大的數。 不一定是刪除最大的數。 參考如下&#xff0c;用例&#xff1a; 輸入&#xff1a; 50074897 2輸出&#xff1a; 4…

雙曲空間學習記錄

文章目錄 前期學習內容雙曲空間中的圖卷積神經網絡 前期學習內容 雙曲空間中的圖卷積神經網絡 250318&#xff1a;這個博客的產生原因是我去看了B站上的一個視頻&#xff0c;up說ppt上傳到github上了&#xff0c;但是我去找了一圈也沒有找到&#xff0c;然后想給他留言&#x…

【ES6新特性】默認參數常見用法

ES6新特性之默認參數的多種用法 &#x1f680;默認參數基礎用法 在ES6中&#xff0c;我們可以直接在函數參數列表中為參數設置默認值&#xff1a; // ES5的實現方式 function greet(name) {name name || Guest;console.log(Hello, ${name}!); }// ES6默認參數寫法 function…

LORA的AB矩陣是針對Transformer的多頭還是MLP

LORA的AB矩陣是針對Transformer的多頭還是MLP Transformer中的矩陣是一個整體還是分開的每個小矩陣 在LORA(Low-Rank Adaptation)中,AB矩陣的應用位置和Transformer中的矩陣拆分方式如下: 1. LORA的AB矩陣作用對象 LORA的AB矩陣主要作用于Transformer的多頭注意力模塊和…

【大模型基礎_毛玉仁】2.4 基于 Encoder-Decoder 架構的大語言模型

更多內容&#xff1a;XiaoJ的知識星球 目錄 2.4 基于 Encoder-Decoder 架構的大語言模型2.4.1 Encoder-Decoder 架構2.4.2 T5 語言模型1&#xff09;T5 模型結構2&#xff09;T5 預訓練方式3&#xff09;T5 下游任務 2.4.3 BART 語言模型1&#xff09;BART 模型結構2&#xff0…

browser-use WebUI + DeepSeek 基于AI的UI自動化解決方案

browser-use WebUI 一、browser-use是什么Browser-use采用的技術棧為&#xff1a; 二、browser-use webui 主要功能使用場景 三、使用教程1.python 安裝2、把項目clone下來3、安裝依賴4、配置環境5、啟動6、配置1.配置 Agent2.配置要用的大模型3.關于瀏覽器的一些設置 四、Deep…

WPF CommunityToolkit.MVVM庫的簡單使用

CommunityToolkit.MVVM 是 .NET 社區工具包中的一部分&#xff0c;它為實現 MVVM&#xff08;Model-View-ViewModel&#xff09;模式提供了一系列實用的特性和工具&#xff0c;能幫助開發者更高效地構建 WPF、UWP、MAUI 等應用程序。以下是關于它的詳細使用介紹&#xff1a; 1…

Windows安裝Apache Maven 3.9.9

第一步下載資源 官網&#xff1a;下載 Apache Maven – Maven 環境變量配置 M2_HOME 指向bin目錄 MAVEN_HOME 指向根目錄 M2_HOME 不確定是否必須要 Path配置 &#xff0c;需要注意MAVEN順序應當在java之前 驗證是否安裝成功&#xff0c;在cmd中以管理員方式打開&#xff0c…

【spring-boot-starter-data-neo4j】創建結點和查找結點操作

配置連接neo4j # application.properties spring.neo4j.uribolt://localhost:7687 spring.neo4j.authentication.usernameneo4j spring.neo4j.authentication.password你的密碼定義實體類 package com.anmory.platform.GraphService.Dao;import org.springframework.data.neo…

pytorch小記(十三):pytorch中`nn.ModuleList` 詳解

pytorch小記&#xff08;十三&#xff09;&#xff1a;pytorch中nn.ModuleList 詳解 PyTorch 中的 nn.ModuleList 詳解1. 什么是 nn.ModuleList&#xff1f;2. 為什么不直接使用普通的 Python 列表&#xff1f;3. nn.ModuleList 的基本用法示例&#xff1a;構建一個包含兩層全連…

Excel導出工具類--復雜的excel功能導出(使用自定義注解導出)

Excel導出工具類 前言: 簡單的excel導出,可以用easy-excel, fast-excel, auto-poi,在導出實體類上加上對應的注解,用封裝好的工具類直接導出,但對于復雜的場景, 封裝的工具類解決不了,要用原生的excel導出(easy-excel, fast-excel, auto-poi都支持原生的) 業務場景: 根據…