深入剖析k8s-Pod篇

為什么需要Pod?

  1. 進程是以進程組的方式組織在一起。
  2. 受限制容器的“單進程模型”, 成組調用沒有被妥善處理(資源調用有限),使用資源囤積則導致復雜度上升。

在k8s項目中,Pod的實現需要使用一個中間容器——Infra容器,該容器永遠是第一個被創建的容器,用戶定義的其他容器則通過Join Network Namespace的方式與Infra容器關聯在一起。
在這里插入圖片描述

initContainer

Init Container容器會按順序逐一啟動,而直到它們啟動并且退出了,用戶容器才會啟動

nodeselector

nodeselector:disktype: ssd

意味著這個Pod只能在攜帶disktype:ssd標簽的節點上運行,否則調度失敗

NodeName

一旦Pod的這個字段被賦值,K8s則認為這個Pod已經被調度

HostAliases

定義了Pod的host文件(比如/etc/hosts)里的內容

shareProcessNamespace

這個Pod里的容器要共享PID Namespace,Pod就是要讓其中的容器盡可能多地共享Linux Namespace

HostNetwork, hostIPC, hostPID

待補充

Lifecycle

  • postStart: 在容器啟動后立即執行一個指定操作。雖然在Docker ENTRYPOINT執行之后,但并不嚴格保證順序。
  • preStop:容器被結束之前(比如收到了SIGKILL信號)執行是同步的。

Pod的生命周期

  • Pending:Pod的YAML文件已經提交給了k8s,API對象已經創建并保存到etcd中。但是Pod里的容器因為某種原因不能被順利創建(比如:調度不成功)。
  • Running:
  • Succeeded:一段時間就退出的Pod,反饋任務執行的結果(運行一次性任務時最為常見)。
  • Failed:Pod里至少有一個容器以不正常的狀態(非0的返回碼)退出。查看Events和日志。
  • Unknown:異常狀態,很有可能是Master和kubelet間的通信出了問題。

特殊的Volume

Secret

Pod想要訪問的加密數據存放到etcd中,可以通過Pod的容器里掛載Volume的方式去訪問Secret里保存的信息。

k create secret generic user --from-file=./username.txtk create secret generic pass --from-file=./password.txt

在這里插入圖片描述
也可以使用Secret.yaml來進行生成。

apiVersion: v1
kind: Secret
metadata:name: mysecret
type: Opaque
data:username: YWRtaW4=password: MTIzNDU2

但Secret對象要求這些數據需要經過Base64進行轉碼,同時創建出來的Secret對象只有一個,在data中以key-value的形式保存。
在這里插入圖片描述

ConfigMap

使用properties文件生成ConfigMap,與Secret區別在ConfigMap保存的是無須加密、應用所需的配置信息。
在這里插入圖片描述

Downward API

讓Pod里的容器能夠直接獲取這個Pod API對象本身的信息。比如可以獲取Pod的Labels字段的值

注意

通過環境變量獲取這些信息的方式不具備自動更新的能力,建議使用volume文件的方式獲取這些消息。

ServiceAccountToken

是一種特殊的Secret對象,每一個Pod都已經自動聲明了一個類型是Secret、名為default-token-xxxx的Volume,然后自動掛載在每一個容器的一個固定目錄上。
在這里插入圖片描述
考慮到自動掛載默認ServiceAccountToken的潛在風險,K8s允許設置默認不為Pod里的容器自動掛載Volume

容器健康檢查和恢復機制

容器健康檢查-liveness

apiVersion: v1
kind: Pod
metadata:name: test-liveness-execlabels:test: liveness
spec:containers:- name: livenessimage: busyboxargs:- /bin/sh- -c- touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600livenessProbe:exec:command:- cat- /tmp/healthyinitialDelaySeconds: 5periodSeconds: 5

也可以定義為發起HTTP或者TCP請求的方式。所以Pod其實可以暴露一個健康檢查URL(/healthz)

恢復機制 restartPolicy

默認值為Always,Pod的恢復過程永遠發生在當前節點上,而不會跑到別的節點上。

  • Always
  • OnFailure
  • Never:如果關心這個容器退出后的上下文環境,比如容器退出后的日志、文件和目錄,就需要將restartPolicy設置為Never

PodPreset

Pod的annotation會表示該Pod被PodPreset改動過,并且修改對象只能是Pod。

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

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

相關文章

css【詳解】—— 圣杯布局 vs 雙飛翼布局 (含手寫清除浮動 clearfix)

兩者功能效果相同&#xff0c;實現方式不同 效果預覽 兩側寬度固定&#xff0c;中間寬度自適應&#xff08;三欄布局&#xff09;中間部分優先渲染允許三列中的任意一列成為最高列 圣杯布局 通過左右欄填充容器的左右 padding 實現&#xff0c;更多細節詳見注釋。 <!DOCTYP…

《無線網絡技術》考試版筆記

第一章 無線網絡介紹 什么是多徑效應&#xff0c;如何去克服&#xff1a; 在發射機和接收機之間沒有明顯的直線路徑時&#xff0c;就會產生多徑傳播。如果兩個信號彼此疊加&#xff0c;那么接收設備就無法正確解調信號&#xff0c;無法還原為它的原始數據形式。 可以稍微調整接…

【leetcode熱題】求根到葉子節點數字之和

難度&#xff1a; 中等通過率&#xff1a; 40.6%題目鏈接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 題目描述 給定一個二叉樹&#xff0c;它的每個結點都存放一個 0-9 的數字&#xff0c;每條從根到葉子節點的路徑都代表一個數字。 例如&#xff0c;從根到葉子…

Linux包管理dpkg、apt和snap

dpkg、apt和snap都是Ubuntu系統中用于軟件管理的工具&#xff0c;但它們在功能和使用上有一些區別。 dpkg: dpkg是Debian包管理系統的底層工具&#xff0c;也是apt和其他高級包管理工具的基礎。主要功能是用于安裝、卸載、配置和構建Debian軟件包&#xff08;.deb文件&#xff…

vue面試題:Computed 和 Watch 的區別?

Computed 和 Watch 的區別? 對于Computed&#xff1a;對于Watch&#xff1a;immediate&#xff1a;組件加載立即觸發回調函數deep&#xff1a;深度監聽&#xff0c;發現數據內部的變化&#xff0c;在復雜數據類型中使用&#xff0c;例如數組中的對象發生變化。需要注意的是&am…

USLE模型-LS因子的計算

目錄 計算坡度計算填洼計算流向計算水流長度計算水平投影![在這里插入圖片描述](https://img-blog.csdnimg.cn/direct/75e015b2d6874ce9b6652f2b8730b90f.png)計算可變的坡度指數m計算坡長因子L計算坡度因子S計算LS因子參考視頻 計算坡度 準備好30米分辨率的dem 計算填洼 計…

速看!深夜悄悄分享一個電力優化代碼集合包!

代碼集合包如下&#xff1a; 主從博弈的智能小區定價策略及電動汽車調度策略 碳交易機制下的綜合能源優化調度 兩階段魯棒優化算法的微網多電源容量配置 冷熱電多能互補綜合能源系統優化調度 考慮預測不確定性的綜合能源調度優化 考慮柔性負荷的綜合能源系統低碳經濟優化調度 考…

MySQL深入——24

Join語句到底可不可用 join語句用于兩個或多個表當中檢索數據。 INNER JOIN或者JOIN 當兩個表當中有匹配的值時&#xff0c;返回行 LEFT JOIN或者LEFT OUTER JOIN 返回所有左邊的行&#xff0c;即使右表當中沒有相匹配的行 RIGHT JOIN或者RIGHT OUTER JOIN 返回所有右邊的…

整數的分離與合成

整數是由數字和數位組成的&#xff0c;比如327是一個三位數&#xff0c;它的數字是3、2、7,數位是個數、十位、百位。 經常有些題目考查將一個整數拆分成各個數字&#xff0c;以及將各個數字合成一個整數&#xff0c;下面分別就此討論。 注&#xff1a;只考慮正整數&#xff…

C語言學生成績信息管理系統【結構體+文本】

功能描述&#xff1a; 1、錄入成績 2、顯示不及格學生信息 3、統計每檔學生數量 4、總成績統計 代碼&#xff1a; #include<stdio.h>#define N 30//結構體&#xff1a;typedef struct STUDENT{char id[10];//學號char name[20];//姓名float score[3];//三門成績,分別代…

Socket網絡編程(四)——點對點傳輸場景方案

目錄 場景如何去獲取到TCP的IP和Port&#xff1f;UDP的搜索IP地址、端口號方案UDP搜索取消實現相關的流程&#xff1a;代碼實現邏輯服務端實現客戶端實現UDP搜索代碼執行結果 TCP點對點傳輸實現代碼實現步驟點對點傳輸測試結果 源碼下載 場景 在一個局域網當中&#xff0c;不知…

生成式人工智能治理:入門的基本技巧

GenAI 以前所未有的速度調解并擾亂了“一切照舊”&#xff0c;同時帶來了令人難以置信的力量&#xff0c;但也帶來了不可否認的責任。當然&#xff0c;現代企業非常熟悉技術進步。然而&#xff0c;人工智能的到來&#xff08;和實施&#xff09;無疑引起了相當大的沖擊&#xf…

C# 12 中的新增功能

本文內容 主構造函數集合表達式ref readonly 參數默認 Lambda 參數 顯示另外 5 個 C# 12 包括以下新增功能。 可以使用最新的 Visual Studio 2022 版本或 .NET 8 SDK 嘗試這些功能。 主構造函數 - 在 Visual Studio 2022 版本 17.6 預覽版 2 中引入。 集合表達式 - 在 Visu…

ThreeJs同一個場景多個相機的顯示

在threeJs開發數字孿生中&#xff0c;我們正常是需要使用一個相機&#xff0c;畫面顯示的內容也就是這個相機拍攝到的內容&#xff0c;但是是否可以添加多個相機&#xff0c;可以同時從不同角度觀察模型呢&#xff0c;實際上是可以的&#xff0c;不過多個相機的拍攝到的畫面肯定…

Linux uname命令教程:了解系統信息和配置(附實例詳解和注意事項)

Linux uname命令介紹 uname&#xff08;Unix Name&#xff09;命令用于顯示系統信息&#xff0c;包括內核名稱、網絡節點名稱、操作系統名稱、版本號、硬件名稱和處理器類型。它是一個基本的系統管理工具&#xff0c;通常用于識別系統配置。 Linux uname命令適用的Linux版本 …

Linux服務:Nginx反向代理與負載均衡

一、Nginx反向代理 1、什么是反向代理&#xff1f; 代理分為兩類&#xff0c;正向代理和反向代理。 ①正向代理&#xff1a;幫助用戶訪問服務器&#xff0c;緩存服務器內容。 ②反向代理&#xff1a;代理服務器處理用戶的請求&#xff0c;決定轉發請求給誰處理負載均衡的作…

Go 與 Rust:導航編程語言景觀

在當今構建軟件時&#xff0c;開發者在編程語言上有著豐富的選擇。兩種脫穎而出的語言是 Go 和 Rust - 都很強大但卻截然不同。本文將從各種因素比較這兩種語言&#xff0c;以幫助您確定哪種更適合您的需求。 我們將權衡它們在并發、安全性、速度、互操作性等方面的方法。我們將…

Ubuntu篇——crontab修改編輯器

輸入命令: crontab -e 如果你的系統是第一次使用crontab服務&#xff0c;會首先讓你選擇一個編輯器 如果已經選擇過編輯器&#xff0c;后續想要修改默認編輯器&#xff0c;可以輸入sudo select-editor進行修改。

【GPU驅動開發】-GPU架構簡介

前言 不必害怕未知&#xff0c;無需恐懼犯錯&#xff0c;做一個Creator&#xff01; GPU&#xff08;Graphics Processing Unit&#xff0c;圖形處理單元&#xff09;是一種專門用于處理圖形和并行計算的處理器。GPU系統架構通常包括硬件和軟件層面的組件。 一、總體流程 應…

Node.js基礎---Express中間件

1. 概念 1.什么是中間件 中間件(Middleware)&#xff0c;特指業務流程的中間處理環節 2. Express 中間件的調用流程 當一個請求到達 Express 的服務器后&#xff0c;可以連續調用多個中間件&#xff0c;從而對這次請求進行預處理 3. Express 中間件格式 Express 的中間件&…