k8s學習記錄(五):Pod親和性詳解

一、前言

? ? 上一篇文章初步探討了 Kubernetes 的節點親和性,了解到它在 Pod 調度上比傳統方式更靈活高效。今天我們繼續討論親和性同時Kubernetes 的調度機制。

二、Pod親和性

??? ?上一篇文章中我們介紹了節點親和性,今天我們講解一下Pod親和性。首先我們先看下Pod親和性的。使用命令 kubectl explain pods.spec.affinity.podAffinity

解釋:

(1)Pod親和性是Pod調度的規則,類例如將一類的Pod調度到相同的節點,和節點親和性一樣,Pod親和性也是由一組調度規則組成。

(2)和節點親和性類似,Pod親和性也分為軟親和性硬親和性

三、軟親和性詳解

1、鑒于在上一篇文章中對節點軟親和性做了一些介紹,但是介紹的相對簡單,所以本文打算深入的講解一下軟親和性。

preferredDuringSchedulingIgnoredDuringExecution:軟親和性,從名字中就可以看出

preferred DuringScheduling:優先調度

IgnoredDuringExecution:運行期間忽略

所謂軟親和性是一種建議,建議調度器在調度Pod的時候遵守一定的規則去進行調度,如果沒有符合條件的節點,則忽略異常。按照一定的規則(比如負載均衡等等)挑選一個節點部署。同時如果節點變更了導致不符合條件也不會將Pod驅逐。

2、繼續深入這個字段,使用命令

kubectl explain pods.spec.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution

描述:調度器會傾向于將 Pod 調度到滿足該字段所指定的親和性表達式的節點上,但它也可能會選擇一個違反了一個或多個表達式的節點。最受青睞的節點是權重總和最大的那個節點。

簡單來說:我們可以定義一系列的規則并且為每個規則設定一定的權重,例如

規則權重
rule11
rule22
rule33

假設我們先2個節點 node1和node2,其中node1符合規則1和2,node2符合規則1、3且不符合規則2。如下表格

節點滿足條件違反規則權重得分
node1rule1、rule23
node2rule1、rule3rule24

雖然node2節點違反了rule1,但是由權重得分最高,pod也會被調度到node2。這就是軟親和性,一句話來說軟親和性是一種優先調度策略。

調度規則

我們繼續查看如何編寫調度規則,使用命令kubectl explain 查看podAffinityTerm字段,命令如下

kubectl explain pods.spec.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm
FIELDS:labelSelector	<LabelSelector>.....篇幅限制,這里刪除了描述,下同matchLabelKeys	<[]string>mismatchLabelKeys	<[]string>namespaceSelector	<LabelSelector>namespaces	<[]string>topologyKey	<string> -required-

(1)labelSelector:是一個標簽選擇器,用于篩選出滿足特定標簽條件的 Pod。案例:

labelSelector:matchLabels:app: web-server
##篩選出 label中包含 app=web-server 的節點

(2)matchLabelKeys:標簽key的選擇器,輸入一直數組。案例:

matchLabelKeys:- test##篩選出包含label key 包含 test的節點

(3)mismatchLabelKeys:和matchLabelKeys剛好相反,不包含

(4)namespaceSelector:命名空間標簽選擇器,這里是通過命名空間包含的標簽來做選擇的

namespaceSelector:matchLabels:purpose: production#篩選出命名空間包含 標簽 purpose=product的節點

(5)namespaces:命名空間選擇器,選擇包含指定命名空間的節點

namespaces:- dev- staging#篩選出包含命名空間 dev、staging的節點

(6)topologyKey(必填):是一個必需字段,它指定了節點標簽的鍵。Kubernetes 根據這個標簽鍵來確定節點的拓撲域,例如節點的主機名、可用區、機架等

topologyKey: kubernetes.io/hostname
權重:weight

權重就很好理解了,就是為規則設置權重(1-100),k8s匹配規則的時候會計算權重,對于軟親和性來說,權重最高的節點將會被選擇。

四、硬親和性詳解

與軟親和性對應的是硬親和性,requiredDuringSchedulingIgnoredDuringExecution

requiredDuringScheduling:調度期間必須滿足

IgnoredDuringExecution:執行期間忽略

結合就是:調度期間必須滿足條件,但是執行期間忽略。即當節點變更后導致不符合條件也不會把Pod驅逐

調度規則

查看描述使用命令

kubectl explain pods.spec.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution
 labelSelector	<LabelSelector>matchLabelKeys	<[]string>mismatchLabelKeys	<[]string>namespaceSelector	<LabelSelector>namespaces	<[]string>topologyKey	<string> -required-

字段和上面一樣,有一點不同的就是沒有權重字段,這里不再贅述。硬親和性要求是必須滿足條件,否則無法調度,pod會一直處于Pending狀態。如下圖

五、總結:

總的來說,Kubernetes 中的 Pod 親和性為我們提供了極為強大的 Pod 調度控制能力。軟親和性的靈活性與硬親和性的嚴格性相互補充,讓我們能夠根據不同的業務場景和應用需求,精準地規劃 Pod 在節點上的分布。這不僅優化了資源利用效率,還增強了系統的穩定性和容錯性。希望對你有所幫助

六、未完待續

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

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

相關文章

HarmonyOS:Navigation實現導航之頁面設置和路由操作

導讀 設置標題欄模式設置菜單欄設置工具欄路由操作頁面跳轉頁面返回頁面替換頁面刪除移動頁面參數獲取路由攔截 子頁面頁面顯示類型頁面生命周期頁面監聽和查詢 頁面轉場關閉轉場自定義轉場共享元素轉場 跨包動態路由系統路由表自定義路由表 示例代碼 Navigation組件適用于模塊…

雪花算法

目錄 一、什么是雪花算法 二、使用雪花算法 ?三、使用UUID 使用自增主鍵是數據庫中常用的唯一標識&#xff0c;今天嘗試使用mybatisplus來實現三種方式的主鍵ID 使用起來也很簡單 用注解指定一下使用那種方式的主鍵 一、什么是雪花算法 一種特殊的算法可以計算得到一個唯…

HarmonyOs @hadss/hmrouter路由接入

參考文檔&#xff1a;官方文檔 在根目錄oh-package.json5配置 {"dependencies": {"hadss/hmrouter": "^1.0.0-rc.11"} }加入路由編譯插件 hvigor/hvigor-config.json文件 {"dependencies": {"hadss/hmrouter-plugin": &…

C++學習筆記(三十八)——STL之修改算法

STL 算法分類&#xff1a; 類別常見算法作用排序sort、stable_sort、partial_sort、nth_element等排序搜索find、find_if、count、count_if、binary_search等查找元素修改copy、replace、replace_if、swap、fill等修改容器內容刪除remove、remove_if、unique等刪除元素歸約for…

Crawl4AI 部署安裝及 n8n 調用,實現自動化工作流(保證好使)

Crawl4AI 部署安裝及 n8n 調用&#xff0c;實現自動化工作流&#xff08;保證好使&#xff09; 簡介 Crawl4AI 的介紹 一、Crawl4AI 的核心功能 二、Crawl4AI vs Firecrawl Crawl4AI 的本地部署 一、前期準備 二、部署步驟 1、檢查系統的網絡環境 2、下載 Crawl4AI 源…

32單片機——外部中斷

STM32F103ZET6的系統中斷有10個&#xff0c;外部中斷有60個 1、中斷的概念 中斷是為使單片機具有對外部或內部隨機發生的事件實時處理而設置的&#xff0c;中斷功能的存在&#xff0c;很大程度上提高了單片機處理外部或內部事件的能力 eg&#xff1a;&#xff1a;你打開火&…

UG NX二次開發(C#)-獲取具有相同屬性名稱的體對象

文章目錄 1、前言2、在UG NX中的屬性的賦予3、通過UG NX二次開發獲取相同屬性的體對象1、前言 UG NX中每個對象都可以屬于屬性的,包括體、面、邊、特征、基準等。在QQ群中有個群有提出一個問題,就是獲取相同屬性的體對象,然后將這個體對象導出到一個part文件中。我們今天先…

手動實現legend 與 echarts圖交互 通過元素和js事件實現圖標某項的高亮 顯示與隱藏

通過html實現legend的樣式 提供調用echarts的api實現與echarts圖表交互的效果 實現餅圖element實現類似于legend與echartstu表交互效果 效果圖 配置代碼 <template><div style"height: 400px; width: 500px;background-color: #CCC;"><v-chart:opti…

SpringBoot與BookKeeper整合,實現金融級別的日志存儲系統

BookKeeper的優勢 高吞吐量和低延遲 分布式架構: Apache BookKeeper采用分布式的架構設計&#xff0c;能夠支持高并發的寫入和讀取操作。 批量寫入: 支持批量寫入日志條目&#xff0c;顯著提高寫入效率。 異步I/O: 使用異步I/O操作&#xff0c;減少等待時間&#xff0c;提升…

【Bug】 [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

當你在進行深度學習相關操作時&#xff0c;若因缺少本地的 CA 證書而無法下載資源&#xff0c;下面為你介紹幾種解決辦法&#xff1a; 方法一&#xff1a;更新 CA 證書 在大多數 Linux 發行版中&#xff0c;你可以使用包管理器來更新 CA 證書。例如&#xff0c;在基于 Debian…

Vue3中AbortController取消請求的用法詳解

在 Vue3 中&#xff0c;AbortController 用于取消 fetch 請求&#xff0c;避免組件卸載后仍執行異步操作導致的潛在問題&#xff08;如內存泄漏或更新已銷毀組件的狀態&#xff09;。以下是詳細用法和最佳實踐&#xff1a; 一、基本用法 創建 AbortController 實例 在組件 setu…

【刷題Day26】Linux命令、分段分頁和中斷(淺)

說下你常用的 Linux 命令&#xff1f; 文件與目錄操作&#xff1a; ls&#xff1a;列出當前目錄的文件和子目錄&#xff0c;常用參數如-l&#xff08;詳細信息&#xff09;、-a&#xff08;包括隱藏文件&#xff09;cd&#xff1a;切換目錄&#xff0c;用于在文件系統中導航m…

Spring Boot 參考文檔導航手冊

&#x1f4da; Spring Boot 參考文檔導航手冊 &#x1f5fa;? ? 新手入門 &#x1f476; 1?? &#x1f4d6; 基礎入門&#xff1a;概述文檔 | 環境要求 | 安裝指南 2?? &#x1f527; 實操教程&#xff1a;上篇 | 下篇 3?? &#x1f680; 示例運行&#xff1a;基礎篇 …

卷積神經網絡(CNN)詳細教程

卷積神經網絡&#xff08;CNN&#xff09;詳細教程 一、引言 卷積神經網絡&#xff08;Convolutional Neural Networks, CNN&#xff09;是一種深度學習模型&#xff0c;廣泛應用于圖像識別、視頻分析、自然語言處理等領域。CNN通過模擬人類視覺系統的層次結構&#xff0c;能夠…

解決SSLError: [SSL: DECRYPTION_FAILED_OR_BAD_RECORD_MAC] decryption faile的問題

問題描述&#xff1a; 在pip安裝第三方庫時&#xff0c;出現SSL的問題。 傳輸層安全性協議&#xff08;TLS&#xff09;及其前身安全套接層&#xff08;SSL&#xff09;是現在的 HTTPS 協議中的一種安全協議&#xff0c;目的是為互聯網通信提供安全及數據完整性保障。而較新版…

SpringBoot程序的創建以及特點,配置文件,LogBack記錄日志,配置過濾器、攔截器、全局異常

目錄 一、創建一個SpringBoot程序 二、SpringBoot的特點 ①主要特點 ②其他特點 ③熱部署 啟動熱部署 關閉熱部署 三、SpringBoot的配置文件 ①SpringBoot三種配置文件的格式&#xff08;以設置端口號為例&#xff09;&#xff1a; ②配置文件的優先級 ③常見配置項 1…

i18n-ai-translate開源程序,可以使用DeepSeek等模型將您的 i18nJSON翻譯成任何語言

一、軟件介紹 文末提供程序和源碼下載 i18n-ai-translate開源程序使用 DeepSeek等模型可以將您的 i18n JSON 翻譯成任何語言。 無縫翻譯本地化文件。支持嵌套翻譯文件的目錄。需要i18next樣式的JSON 文件&#xff08;文末一并提供下載&#xff09;。 二、模式 CSV 模式 三個…

Flask + ajax上傳文件(一)--單文件上傳

一、概述 本教程將教你如何使用Flask后端和AJAX前端實現文件上傳功能,包含完整的代碼實現和詳細解釋。 二、環境準備 1. 所需工具和庫 Python 3.xFlask框架jQuery庫Bootstrap(可選,用于美化界面)2. 安裝Flask pip install flask三、項目結構 upload_project/ ├── a…

如何在 Postman 中,自動獲取 Token 并將其賦值到環境變量

在 Postman 中&#xff0c;你可以通過 預請求腳本&#xff08;Pre-request Script&#xff09; 和 測試腳本&#xff08;Tests&#xff09; 實現自動獲取 Token 并將其賦值到環境變量&#xff0c;下面是完整的操作步驟&#xff1a; ? 一、創建獲取 Token 的請求 通常這個請求…

北斗導航 | 基于Transformer+LSTM+激光雷達的接收機自主完好性監測算法研究

基于Transformer+LSTM+激光雷達的接收機自主完好性監測算法研究 接收機自主完好性監測(RAIM)是保障全球導航衛星系統(GNSS)定位可靠性的核心技術。傳統RAIM算法依賴最小二乘殘差法,存在故障漏檢、對復雜環境適應性差等問題。結合Transformer、LSTM與激光雷達的多模態融合…