k8s親和力和非親和力

在 Kubernetes 中,親和力(Affinity)和非親和力(Anti-Affinity)是用于控制 Pod 調度策略的機制,它們可以幫助優化資源利用率、提高應用性能和可用性。以下是親和力和非親和力的詳細解釋:

親和力(Affinity)
親和力允許用戶定義規則,指定 Pod 應該被調度到哪些節點上。親和力分為兩種類型:
節點親和力(Node Affinity)
定義:節點親和力允許用戶通過節點的標簽來指定 Pod 應該被調度到哪些節點上。

作用:可以提高資源利用率、優化性能。
Node親和力允許你指定Pod應該被調度到具有特定標簽的節點上。它分為兩種類型:
requiredDuringSchedulingIgnoredDuringExecution:必須滿足的規則,否則Pod不會被調度。
preferredDuringSchedulingIgnoredDuringExecution:盡力滿足的規則,但不是必須的。
示例:

affinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: coloroperator: Invalues:- blue- green

這個例子表示 Pod 只會被調度到標簽為 color=blue 或 color=green 的節點上。

Pod 親和力(Pod Affinity)
定義:Pod 親和力允許用戶通過其他 Pod 的標簽來指定 Pod 應該被調度到哪些節點上。

作用:可以確保相關 Pod 被調度到同一節點或相近的節點上,從而減少網絡延遲。
Pod親和力允許你指定Pod應該與其他具有特定標簽的Pod共同部署在同一個節點上。它同樣分為兩種類型:
requiredDuringSchedulingIgnoredDuringExecution:必須滿足的規則。
preferredDuringSchedulingIgnoredDuringExecution:盡力滿足的規則。
示例:

affinity:podAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- key: appoperator: Invalues:- webtopologyKey: kubernetes.io/hostname

這個例子表示 Pod 只會被調度到已經運行了標簽為 app=web 的其他 Pod 的節點上。

詳細解釋
1.affinity
含義:定義 Pod 的親和力和非親和力策略。
作用:用于控制 Pod 的調度行為,確保 Pod 被調度到滿足特定條件的節點上。
2. podAffinity
含義:定義 Pod 的親和力策略。
作用:確保 Pod 與某些其他 Pod 調度到同一節點或相近的節點上。
3. requiredDuringSchedulingIgnoredDuringExecution
含義:表示這個親和力規則在調度期間是必須滿足的,但在執行期間可能會被忽略。
作用:確保在調度時,Pod 只會被調度到滿足條件的節點上。如果節點上的條件在運行時發生變化,這個規則可能會被忽略。
4. labelSelector
含義:定義標簽選擇器,用于選擇其他 Pod。
作用:通過標簽選擇器,指定哪些 Pod 是我們關心的。
5. matchExpressions
含義:定義匹配表達式,用于選擇滿足特定條件的 Pod。
作用:通過匹配表達式,指定哪些 Pod 是我們想要與當前 Pod 調度到同一節點上的。
6. key 和 operator
key:標簽的鍵。
operator:匹配操作符,可以是 In、NotIn、Exists、DoesNotExist 等。
values:標簽的值列表。
7. topologyKey
含義:定義拓撲域的鍵。
作用:指定在哪個拓撲域內應用親和力策略。常見的拓撲鍵包括:
kubernetes.io/hostname:表示節點的主機名。
failure-domain.beta.kubernetes.io/zone:表示可用區。
failure-domain.beta.kubernetes.io/region:表示區域。

非親和力(Anti-Affinity)
非親和力允許用戶定義規則,指定 Pod 不應該被調度到哪些節點上。非親和力也分為兩種類型:
節點非親和力(Node Anti-Affinity)
定義:節點非親和力允許用戶通過節點的標簽來指定 Pod 不應該被調度到哪些節點上。

作用:可以提高容錯性、確保資源隔離。
Node親和力允許你指定Pod應該被調度到具有特定標簽的節點上。它分為兩種類型:
requiredDuringSchedulingIgnoredDuringExecution:必須滿足的規則,否則Pod不會被調度。
preferredDuringSchedulingIgnoredDuringExecution:盡力滿足的規則,但不是必須的。
示例:

affinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: coloroperator: NotInvalues:- yellow

這個例子表示 Pod 不會被調度到標簽為 color=yellow 的節點上。

Pod 非親和力(Pod Anti-Affinity)
定義:Pod 非親和力允許用戶通過其他 Pod 的標簽來指定 Pod 不應該被調度到哪些節點上。

作用:可以確保相關 Pod 不被調度到同一節點或相近的節點上,從而提高可用性。
Pod親和力允許你指定Pod應該與其他具有特定標簽的Pod共同部署在同一個節點上。它同樣分為兩種類型:
requiredDuringSchedulingIgnoredDuringExecution:必須滿足的規則。
preferredDuringSchedulingIgnoredDuringExecution:盡力滿足的規則。
示例:

affinity:	podAntiAffinity:	requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- key: appoperator: Invalues:- dbtopologyKey: kubernetes.io/hostname

這個例子表示 Pod 不會被調度到已經運行了標簽為 app=db 的其他 Pod 的節點上。
詳細解釋
1.affinity
含義:定義 Pod 的親和力和非親和力策略。
作用:用于控制 Pod 的調度行為,確保 Pod 被調度到滿足特定條件的節點上,或者避免被調度到某些節點上。
2.podAntiAffinity
含義:定義 Pod 的非親和力策略。
作用:確保 Pod 不與某些其他 Pod 調度到同一節點或相近的節點上。
3.requiredDuringSchedulingIgnoredDuringExecution
含義:表示這個非親和力規則在調度期間是必須滿足的,但在執行期間可能會被忽略。
作用:確保在調度時,Pod 不會被調度到不符合條件的節點上。如果節點上的條件在運行時發生變化,這個規則可能會被忽略。
4.labelSelector
含義:定義標簽選擇器,用于選擇其他 Pod。
作用:通過標簽選擇器,指定哪些 Pod 是我們關心的。
5.matchExpressions
含義:定義匹配表達式,用于選擇滿足特定條件的 Pod。
作用:通過匹配表達式,指定哪些 Pod 是我們想要避免與當前 Pod 調度到同一節點上的。
6.key 和 operator
key:標簽的鍵。
operator:匹配操作符,可以是 In、NotIn、Exists、DoesNotExist 等。
values:標簽的值列表。
7.topologyKey
含義:定義拓撲域的鍵。
作用:指定在哪個拓撲域內應用非親和力策略。常見的拓撲鍵包括:
kubernetes.io/hostname:表示節點的主機名。
failure-domain.beta.kubernetes.io/zone:表示可用區。
failure-domain.beta.kubernetes.io/region:表示區域。

查看親和力設置
要查看Pod的親和力設置,可以使用kubectl describe pod 命令。這將顯示Pod的詳細信息,包括其親和力規則。

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

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

相關文章

開發一款游戲需要哪些崗位角色參與?

常見分類 1. 游戲策劃(Game Designer) 核心職責:設計游戲的玩法、規則、內容和整體體驗。 具體工作: 系統設計:設計游戲的戰斗、經濟、成長、社交等核心系統。 數值設計:平衡角色屬性、裝備數值、經濟系…

Asp.NET Core WebApi 創建帶鑒權機制的Api

構建一個包含 JWT(JSON Web Token)鑒權的 Web API 是一種常見的做法,用于保護 API 端點并驗證用戶身份。以下是一個基于 ASP.NET Core 的完整示例,展示如何實現 JWT 鑒權。 1. 創建 ASP.NET Core Web API 項目 使用 .NET CLI 或 …

Jenkins 發送釘釘消息

這里不介紹 Jenkins 的安裝,可以網上找到很多安裝教程,重點介紹如何集成釘釘消息。 需要提前準備釘釘機器人的 webhook 地址。(網上找下,很多教程) 下面開始配置釘釘機器人,登錄 Jenkins,下載 …

CentOS中離線安裝DockerCompos并用其部署Rabbitmq(使用離線導入導出docker鏡像方式)

場景 DockerDockerCompose實現部署jenkins,并實現jenkinsfile打包SpringBootVue流水線項目過程詳解、踩坑記錄(附鏡像資源、離線包資源下載): DockerDockerCompose實現部署jenkins,并實現jenkinsfile打包SpringBootVue流水線項目過程詳解、踩坑記錄(附鏡像資源、離…

stm32week11

stm32學習 八.stm32基礎 2.stm32內核和芯片 F1系統架構:4個主動單元和4個被動單元 AHB是內核高性能總線,APB是外圍總線 總線矩陣將總線和各個主動被動單元連到一起 ICode總線直接連接Flash接口,不需要經過總線矩陣 AHB:72MHz&am…

貪心算法:部分背包問題深度解析

簡介: 該Java代碼基于貪心算法實現了分數背包問題的求解,核心通過單位價值降序排序和分階段裝入策略實現最優解。首先對Product數組執行雙重循環冒泡排序,按wm(價值/重量比)從高到低重新排列物品;隨后分兩階段裝入:循環…

13. Langchain異步處理:提升應用性能的關鍵技巧

引言:從"順序等待"到"并行加速" 2025年某電商平臺引入LangChain異步處理后,大促期間訂單處理能力提升5倍,系統響應延遲降低70%。本文將基于LangChain的異步架構,詳解如何通過并行執行流式處理,讓…

ros2-rviz2控制unity仿真的6關節機械臂,探索從仿真到實際應用的過程

文章目錄 前言(Introduction)搭建開發環境(Setup Development Environment)在window中安裝Unity(Install Unity in window)創建Docker容器,并安裝相關軟件(Create Docker containers…

計算機組成原理筆記(十四)——3.4指令類型

一臺計算機的指令系統可以有上百條指令,這些指令按其功能可以分成幾種類型,下面分別介紹。 3.4.1數據傳送類指令 一、核心概念與功能定位 數據傳送類指令是計算機指令系統中最基礎的指令類型,負責在 寄存器、主存、I/O設備 之間高效復制數…

各開源協議一覽

在 GitHub 上,開源項目通常會使用一些常見的開源協議來定義項目的使用、修改和分發規則。以下是目前 GitHub 上最常見的幾種開源協議及其差異和示例說明: TL;DR 協議寬松程度是否強制開源專利保護適用場景MIT最寬松否無希望代碼被廣泛使用Apache 2.0寬松…

51c自動駕駛~合集17

我自己的原文哦~ https://blog.51cto.com/whaosoft/13793157 #匯聚感知、定位、規劃控制的自動駕駛系統 自動駕駛技術在應用到車輛上之后可以通過提高吞吐量來緩解道路擁堵,通過消除人為錯誤來提高道路安全性,并減輕駕駛員的駕駛負擔,從…

小程序開發指南

小程序開發指南 目錄 1. 小程序開發概述 1.1 什么是小程序1.2 小程序的優勢1.3 小程序的發展歷程 2. 開發準備工作 2.1 選擇開發平臺2.2 開發環境搭建2.3 開發模式選擇 3. 小程序開發流程 3.1 項目規劃3.2 界面設計3.3 代碼開發3.4 基本開發示例3.5 數據存儲3.6 網絡請求3.7 …

Day15:關于MySQL的編程技術——基礎知識

前言:先創建一個練習的數據庫和數據 1.創建數據庫并創建數據表的基本結構 -- 創建練習數據庫 CREATE DATABASE db_programming; USE db_programming;-- 創建員工表(包含各種數據類型) CREATE TABLE employees (emp_id INT PRIMARY KEY AUTO…

批處理腳本bat丨遍歷一個包含項目名稱的數組,并對每個文件中的項目執行 git pull 操作 (一鍵拉很多文件的代碼)

文章目錄 前言一、操作方式二、文件展示三、分析代碼結構四、代碼五、需要注意的潛在問題六、改進后的代碼七、改進說明八、感謝 前言 由于之前git服務部署在本地服務器,處于代碼安全角度考慮。領導讓我將所有的項目代碼手動物理備份一份并且發給他。 這種傻傻的操…

【C++】C與C++、C++內存空間、堆與棧

C嘎嘎嘎嘎嘎~ C與C的區別與聯系 C內存空間 int global_var; // 未初始化全局變量,BSS段 const char* str "Hello"; // 字符串常量text段 in數據段void func() {static int static_var; // 未初始化的靜態變量,數據段int local_var; …

舵機:機器人領域的“關節革命者”

機器人的技術,每一個細微的進步都可能引領一場行業變革。而在這場變革中,舵機作為機器人關節的核心部件,正悄然上演著一場革命性的應用風暴。從簡單的關節運動到復雜的姿態控制,舵機以其卓越的性能和無限的可能,重新定…

微前端的不斷探索之路—— qiankun 實戰與思考!

全文目錄: 開篇語📝 前言🛠? 微前端是什么?為什么需要它?💡 先從“前端痛點”說起🧐 微前端的優勢 🤹?♀? qiankun 簡介與核心概念🌟 為什么選擇 qiankun?…

拆解加密黑盒

在Web安全與數據爬取領域,JavaScript加密黑盒的逆向工程是核心技術之一。本文基于行業通用方法論與實戰案例,提煉出一套標準化的五步逆向流程,涵蓋目標定位、代碼提取、邏輯分析、算法復現到自動化集成的全鏈路解決方案,幫助開發者…

IntelliJ IDEA 中安裝和使用通義靈碼 AI 編程助手教程

隨著人工智能技術的發展,AI 編程助手逐漸成為提升開發效率的強大工具。通義靈碼是阿里云推出的一款 AI 編程助手,它能夠幫助開發者實現智能代碼補全、代碼解釋、生成單元測試等功能,極大地提升了編程效率和代碼質量。 IntelliJ IDEA 是一款廣…

Redis 特性和應用場景

1. Redis特性 1)In-memory data structures Redis 在內存中存儲數據,key 是 String, value 可以是 hash, list, set, sorted set, stream ... MySQL主要是通過 “表” 的方式來存儲組織數據的 “關系型數據庫” Redis主要是通過 “鍵值對”…