k8s污點與容忍

k8s污點與容忍

    • k8s污點管理常用命令
      • effect標記值
      • 查看污點
      • 添加污點
      • 刪除污點
    • node污點與容忍
      • 污點容忍yaml示例
      • 容忍放大
      • 基于污點的驅逐
      • 驅逐時排除指定服務
    • 設置master調度
      • 設置master盡量不調度
      • 允許master節點調度pod
      • 恢復Master Only狀態
      • 將node標記為不可調度狀態(節點警戒)
      • 設置node不可用并驅逐節點上的所有pod(騰空節點)
      • 設置node為可用

k8s污點管理常用命令


effect標記值

effect標記值


查看污點

對于k8s1.24+,master節點將不再添加node-role.kubernetes.io/master 標簽, 只會添加node-role.kubernetes.io/control-plane標簽。更多信息請參考 KEP-2067:重命名 kubeadm “master” 標簽和污點。
https://kubernetes.io/zh-cn/blog/2022/04/07/upcoming-changes-in-kubernetes-1-24/

# 查看所有node的污點信息?:ml-citation{ref="1,5" data="citationList"}  
kubectl describe nodes | grep -i Taints# 查看污點
kubectl describe nodes node名 |grep Taints
# Taints:   node.kubernetes.io/unreachable:NoSchedule

在這里插入圖片描述


添加污點

# 添加污點
kubectl taint nodes node名 key=value:effect值# 添加 NoSchedule 污點
kubectl taint nodes node1 app=monitoring:NoSchedule# 添加 NoExecute 污點(驅逐現有 Pod)  
kubectl taint nodes node2 disk=ssd:NoExecute# 添加新污點  
kubectl taint nodes node1 app=logging:NoExecute# 添加 盡量不調度 PreferNoSchedule 
kubectl taint nodes k8s-master02 node-role.kubernetes.io/master:PreferNoSchedule## effect是標記值
kubectl taint nodes node1 key1=value1:NoSchedule
kubectl taint nodes node1 key1=value1:NoExecute
kubectl taint nodes node1 key2=value2:PreferNoSchedule# 給master1機器加NoSchedule污點--k8s1.23
kubectl taint nodes m1 node-role.kubernetes.io/control-plane:NoSchedule

在這里插入圖片描述


刪除污點

# 去除污點
kubectl taint nodes node名 key:effec值-
## 或 
kubectl taint nodes node名 key=value-
## 建議
kubectl taint nodes node名 key-# 刪除指定 key 和 effect 的污點  
kubectl taint nodes node1 app=monitoring:NoSchedule-# 刪除所有 effect 類型的污點(需明確指定 key 和 effect)
kubectl taint nodes node2 disk=ssd:NoExecute-# 去除污點NoSchedule,最后一個"-"代表刪除
kubectl taint nodes k8s-master02 node-role.kubernetes.io/master:NoSchedule-# 刪除舊污點  
kubectl taint nodes node1 app=monitoring:NoSchedule-

在這里插入圖片描述


node污點與容忍

參考: 官方污點文檔

三只兔子的故事來了解k8s污點與容忍

為什么Node要使用污點:

  • 安全考慮
  • Node職責角色分工不同
  • 硬件不同

污點也類似于在node上打一個標簽.例如專用節點,比如GPU,SSD等,一般pod不會運行在這種專用節點,如果pod想運行在這種專用節點上,需要配置污點容忍.

Taint: 污點,避免pod調度到特定Node上,相當于排斥Pod
Tolerations: 污點容忍,允許pod調度到帶有特定Taints的Node上


污點容忍yaml示例

apiVersion: v1
kind: Pod
metadata:name: nginxlabels:env: test
spec:containers:- name: nginximage: nginximagePullPolicy: IfNotPresent# 污點容忍tolerations:# 容忍key=example-key 等effect值存在NoSchedule- key: "example-key"operator: "Exists"# value: "example-value"  # 可不配置effect: "NoSchedule"

容忍放大

k8s的一些基礎靜態pod,比如apiserver,配置的就是容忍放大,下方是示例
容忍放大,只要keyeffect存在即容忍.

apiVersion: v1
kind: Pod
metadata:name: apiserverlabels:env: test
spec:containers:- name: apiserverimage: apiserverimagePullPolicy: IfNotPresent# 污點容忍tolerations:# 容忍所有effect值為NoSchedule的污點- effect: NoScheduleoperator: Exists# 容忍污點key值CriticaAddonsOnly存在- key: CriticaAddonsOnlyoperator: Exists# 容忍所有effect值為NoExecute的污點- effect: NoExecuteoperator: Exists

基于污點的驅逐

參考: 官方文檔

kubelet 驅逐策略詳解

污點的 effect 值 NoExecute會影響(驅逐)已經在節點上運行的 Pod,如果Pod沒有配置容忍 effect 值為 NoExecute 的污點,會被立即驅逐.

Pod配置了容忍NoExecute,但在容忍度定義中沒有指定 tolerationSeconds(寬限期),則 Pod 還會一直在這個節點上運行。

Pod配置了容忍NoExecute,,而且指定了 tolerationSeconds(寬限期), 則 Pod 還能在這個節點上繼續運行這個指定的時間長度。

節點故障時,節點控制器會自動給節點添加一個(內置)污點.如果異常狀態恢復正常,kubelet 或節點控制器能夠移除相關的污點。


驅逐時排除指定服務

# 說明:此命令將驅逐節點上運行的pod服務
## --ignore-daemonsets  驅逐的時候排除daemonset類型服務
[root@wps]# kubectl drain 10.226.xxx.xxx --ignore-daemonsets

設置master調度


設置master盡量不調度

盡量不調度的污點PreferNoSchedule;
禁止調度并驅逐的污點NoExecute

# master添加 盡量不調度 PreferNoSchedule 
kubectl taint nodes k8s-master02 node-role.kubernetes.io/master:PreferNoSchedule

允許master節點調度pod

# 去除污點NoSchedule,最后一個"-"代表刪除污點# 允許所有master節點調度pod
kubectl taint nodes --all node-role.kubernetes.io/master-# 允許master2節點調度pod;
kubectl taint nodes k8s-master02 node-role.kubernetes.io/master:NoSchedule-

恢復Master Only狀態

參考: https://cloud.tencent.com/developer/article/1788356

# 指定master1為Only狀態(加污點,不允許pod調度)
kubectl taint node maser1 node-role.kubernetes.io/master="":NoSchedule

將node標記為不可調度狀態(節點警戒)

# 將node標記為不可調度狀態(節點警戒)
kubectl cordon node名

設置node不可用并驅逐節點上的所有pod(騰空節點)

當節點磁盤空間不足時,Pod被驅逐的順序為: BestEffort先于 Burstable

# 切換到名為ek8s的集群
kubectl config use-context ek8s# 查看node狀態
kubectl get nodes# 設置節點不可用并驅逐節點上的所有pod(騰空節點)
## 節點排水(驅逐節點上的所有pod)
## 忽略節點上不能殺死的特定系統Pod,例如:CNI插件,daemonSet
## --delete-local-data 清空本地數據
## --ignore-daemonsets 忽略daemonsets錯誤
## --force 強制執行
kubectl drain ek8s-node-1 --ignore-daemonsets --force # 考試執行
## 如果報錯,加--delete-local-data 清空本地數據
kubectl drain ek8s-node-1 --delete-local-data --ignore-daemonsets --force # 練習執行# 查看node狀態
kubectl get nodes# 查看污點
kubectl describe nodes node名 |grep Taints
# Taints:   node.kubernetes.io/unreachable:NoSchedule

設置node為可用

# 標記my-node 節點為可以調度
kubectl uncordon node名# 取消污點
## 如果已存在具有指定鍵和效果的污點,則替換其值為指定值。
kubectl taint nodes node名 dedicated=special-user:NoSchedule# 去除污點NoSchedule,最后一個"-"代表刪除
kubectl taint nodes node名 node-role.kubernetes.io/master:NoSchedule-# 查看污點是否去除
kubectl describe nodes node名 |grep Taints

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

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

相關文章

(BFS)題解:P9425 [藍橋杯 2023 國 B] AB 路線

題解:P9425 [藍橋杯 2023 國 B] AB 路線 題目傳送門 P9425 [藍橋杯 2023 國 B] AB 路線 一、題目描述 給定一個NM的迷宮,每個格子標記為A或B。從左上角(1,1)出發,需要移動到右下角(N,M)。移動規則是:必須交替走K個A格子和K個B…

python-leetcode 62.搜索插入位置

題目: 給定一個排序數組和一個目標值,在數組中找到目標值,并返回其索引。如果目標值不存在于數組中,返回它將會被按順序插入的位置 方法一:二分查找 假設題意是在排序數組中尋找是否存在一個目標值,則可以…

【計網速通】計算機網絡核心知識點和高頻考點——數據鏈路層(一)

數據鏈路層核心知識點(一) 一、數據鏈路層概述 1.1 基本概念 數據鏈路層位于OSI模型的第二層,介于物理層和網絡層之間,主要負責在相鄰節點之間傳輸和識別數據幀。 1.2 主要功能 幀同步:識別幀的開始和結束差錯控制…

模型部署與調用

目錄 部署 ollama下載 模型版本選擇 ?編輯 對照表 控制臺執行 調用 部署 大模型部署我使用的是Ollama,點擊跳轉 接下來我將在本地使用ollama就行模型部署的演示 ollama下載 模型版本選擇 對照表 大家可以根據自己的顯卡配置選擇對應的模型版本 控制臺執…

Rstudio如何使用Conda環境配置的R

前言 Rstudio作為一款流行的R語言集成開發環境(IDE),為用戶提供了便捷的編程體驗。然而,不同項目可能需要不同版本的R,這就需要我們靈活切換R版本。除了在之前文章中提到的使用 Docker 部署不同版本的 R 的方法之外&am…

C++---RAII模式

一、RAII模式概述 1. 定義 RAII(Resource Acquisition Is Initialization)即資源獲取即初始化,是C中用于管理資源生命周期的一種重要編程模式。其核心在于將資源的獲取和釋放操作與對象的生命周期緊密綁定。當對象被創建時,資源…

【功能開發】DSP F2837x 檢測中斷所有函數運行一次的時間

要查看 DSP F28377 的 CPU 在 50 微秒一次的中斷內所有程序運行完總共占用了中斷多長時間,可以采用硬件定時器測量和軟件計時兩種常見方法。 方法一:使用硬件定時器測量 原理 利用 DSP 內部的高精度硬件定時器,在中斷開始時記錄定時器的值…

MAC環境給docker換源

2025-03-28 MAC環境給docker換源 在官網下載docker ,dmg 文件 參考: https://blog.csdn.net/qq_73162098/article/details/145014490 {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},&q…

Vulnhub-zico2靶機打靶記錄

本篇文章旨在為網絡安全滲透測試靶機教學。通過閱讀本文,讀者將能夠對滲透Vulnhub系列zico2靶機有一定的了解 一、信息收集階段 靶機下載地址:https://download.vulnhub.com/zico/zico2.ova 因為靶機為本地部署虛擬機網段,查看dhcp地址池設…

【LeetCode 熱題100】347:前 K 個高頻元素(詳細解析)(Go語言版)

🚀 力扣熱題 347:前 K 個高頻元素(詳細解析) 📌 題目描述 力扣 347. 前 K 個高頻元素 給你一個整數數組 nums 和一個整數 k,請你返回其中出現頻率 前 k 高的元素。你可以按 任意順序 返回答案。 &#x1f…

Java 大視界 -- Java 大數據機器學習模型在金融衍生品定價中的創新方法與實踐(166)

💖親愛的朋友們,熱烈歡迎來到 青云交的博客!能與諸位在此相逢,我倍感榮幸。在這飛速更迭的時代,我們都渴望一方心靈凈土,而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識,也…

深度學習入門:從神經網絡基礎到簡單實現

深度學習作為人工智能領域最令人興奮的技術之一,已經在圖像識別、自然語言處理、語音識別等多個領域取得了突破性進展。本文將深入淺出地介紹深度學習的基本概念,并通過Python代碼實現一個簡單的神經網絡模型,幫助讀者建立直觀理解并邁出實踐第一步。 神經網絡的基本原理 …

第2.6節 iOS生成全量和增量報告

2.6.1 簡介 在采集了覆蓋率數據后,就需要生成對應需求的全量和增量覆蓋率報告,以便對測試進行查漏補缺。IOS系統有兩種開發語言,所以生成報告的方式也不相同,下面就分別介紹一下Object C和Swift語言如何生成覆蓋率報告。 2.6.2 O…

STM32技能綜合鞏固

一、深入理解ARMCPU架構及其指令格式、ARM匯編語言編程方法 1.匯編語言編程,實現LED燈 新建keil項目,選擇芯片 選擇運行環境以及配置 添加.s文件 匯編程序: AREAMYDATA,DATA AREAMYCODE,CODE ENTRY EXPORT__main __main MOVR0,#10 M…

P2Rank網頁端:預測蛋白結合口袋+vina分子對接

P2Rank 是一種基于機器學習的蛋白質口袋預測工具,用于識別蛋白質結構中的潛在配體結合位點。它采用了一種基于物理特征的打分方法,結合隨機森林(Random Forest)機器學習模型,以提高口袋預測的精確度。 該程序有在線工具…

安裝windows server 2016沒有可選硬盤,設備安裝過ubuntu系統

如果在安裝 Windows Server 2016 時無法識別已安裝過 Ubuntu 的硬盤,可能是由于硬盤分區格式(如 ext4)與 Windows 不兼容,或缺少必要的驅動程序。以下是詳細的解決方案: 1. 檢查 BIOS/UEFI 設置 確認硬盤模式 ? 重啟電…

Debian系統_主板四個網口1個配置為WAN,3個配置為LAN

Debian系統_主板四個網口1個配置為WAN,3個配置為LAN 一、重新配置網口 1、查看當前網口的狀態 ifconfig 或者 ip link show 或者 ls /sys/class/net 2、修改網絡配置文件 sudo vi /etc/network/interfaces 注意WAN口的網關地址如果是192.168.3.1的話,L…

springboot整合Thymeleaf web開發出現Whitelabel Error Page

背景 在做java端上應用開發的時候,從資源和部署操作成本兩方面考慮,一般會將前端的靜態資源直接與后端應用一起打包,通過springboot內嵌的Tomcat提供web服務。進入web首頁登錄一直到后續業務流程正向操作,頁面都能正常加載靜態資…

JavaScript元素尺寸與位置

目錄 client 家族與 offset 家族 一、client 家族:內容區域 內邊距 示例代碼 應用場景 二、offset 家族:內容區域 內邊距 邊框 滾動條 示例代碼 應用場景 三、綜合應用場景 1. 動態調整元素高度 2. 拖拽元素 3. 判斷元素是否在視口內 四…

GZ073網絡系統管理賽項賽題第1套模塊A:網絡構建解題筆記

2. 設備 接口或VLAN VLAN名稱 二層或三層規劃 說明 S1 VLAN10 CAIWU Gi0/1至Gi0/4 財務部 VLAN20 XIAOSHOU Gi0/5至Gi0/8 銷售部 VLAN30 YANFA Gi0/9至Gi0/12 研發部 VLAN40 SHICHANG Gi0/13至Gi0/16 市場部 VLAN50 AP Gi0/20至Gi0/21 無線AP管理 VL…