解決DaemonSet沒法調度到master節點的問題

最近在kubernetes部署一個springcloud微服務項目,到了最后一步部署邊緣路由:使用nginx-ingress和traefik都可以,必須使用DaemonSet部署,但是發現三個節點,卻總共只有兩個pod。

換句話說,?DaemonSet沒法調度到master節點上。

?要理解這種情況,就必須理解kubernets中pod的污點和容忍度的問題

什么是污點(taint)和容忍度(toleration)

“污點”是Kubernetes節點的一個屬性,字段名為taint,它的含義說的直白點,就是表明這個節點“不干凈”

和“污點”相對應的,就是Pod的“容忍度”,顧名思義,就是Pod能否“容忍”污點。

? ? ? 打個形象的比喻:集群里的節點各式各樣,有的節點“純潔無瑕”,沒有“污點”;而有的節點因為某種原因粘上了“泥巴”,也就有了“污點”。Pod也脾氣各異,有的“潔癖”很嚴重,不能容忍“污點”,只能挑選“干凈”的節點;而有的Pod則比較“大大咧咧”,要求不那么高,可以適當地容忍一些小“污點”。

這么看來,“污點”和“容忍度”倒是有點像是一個“相親”的過程。Pod就是一個挑剔的“甲方”,而“乙方”就是集群里的各個節點,Pod會根據自己對“污點”的“容忍程度”來選擇合適的目標,比如要求“不抽煙不喝酒”,但可以“無車無房”,最終決定在哪個節點上“落戶”。

Kubernetes在創建集群的時候會自動給節點Node加上一些“污點”,方便Pod的調度和部署。

如下面Master和Node節點的狀態

[root@k8s-node2 vhost]# kubectl get nodes
NAME ? ? ? ? STATUS ? ROLES ? ?AGE ? ? ?VERSION
k8s-master ? Ready ? ?master ? 3y292d ? v1.17.2
k8s-node1 ? ?Ready ? ?<none> ? 4d5h ? ? v1.17.2
k8s-node2 ? ?Ready ? ?<none> ? 3y292d ? v1.17.2
[root@k8s-node2 vhost]# kubectl describe node k8s-master|grep Taints
Taints: ? ? ? ? ? ? node-role.kubernetes.io/master:NoSchedule
[root@k8s-node2 vhost]# kubectl describe node k8s-node1|grep Taints
Taints: ? ? ? ? ? ? <none>
[root@k8s-node2 vhost]# kubectl describe node k8s-node2|grep Taints
Taints: ? ? ? ? ? ? <none>
?

?可以看到,Master節點默認有一個?taint污點,名字是?node-role.kubernetes.io/master,它的效果是?NoSchedule,也就是說這個污點會拒絕Pod調度到本節點上運行,而node節點的?taint?字段則是空的。

這正是Master和node在Pod調度策略上的區別所在,通常來說Pod都不能容忍任何“污點”,所以加上了?taint?屬性的Master節點被認為是有污點,pod默認不會調度到該節點

這個也很好理解:?由于master節點具有一定的特殊性,出于安全及角色的原因,一般不建議在Master節點部署應用的Pod實例, 因為Master 節點主要運行集群管理組件和控制面等關鍵組件。

那么怎么解決這個問題,讓pod能調度到master節點: 引入toleration,允許容忍這個污點

具體來說,就是在pod定義yml文件中跟container容器的同級字段加入下面的配置:

tolerations:

- key: node-role.kubernetes.io/master

? effect: NoSchedule

? operator: Exists

它的定義位置或者可以說在這里:daemonSet定義的spec.template.spec下

解釋一下它們的含義:

  1. key: node-role.kubernetes.io/master?key表示tolerations能容忍的節點標記,這里就是指能容忍的節點類型是master節點

  2. effect: NoSchedule?effect表示taint污點標記產生的效果,NoSchedule是指告訴調度器,不允許調度到帶有這個 taint 污點標識的節點上,除非 Pod 顯式容忍(tolerate)這個 taint,

  3. operator: Exists?表示只容忍key指定類型的節點。在這個例子中,Pod 只要運行在帶有 node-role.kubernetes.io/master taint 的節點上,就能夠被容忍。

?配置在yml文件中的具體情形:

?定義了容忍污點以后,pod果然可以調度到master節點了:

?

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

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

相關文章

UML建模圖文詳解教程05——包圖

版權聲明 本文原創作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl本文參考資料&#xff1a;《UML面向對象分析、建模與設計&#xff08;第2版&#xff09;》呂云翔&#xff0c;趙天宇 著 包圖概述 包圖(package diagram)是用來描述模型中的…

一個最簡單的工業通訊數據分析例子

1.背景 對工業設備的通訊協議進行分析可以幫助我們更好地理解其工作原理和相關技術&#xff0c;并且有助于以下幾個方面&#xff1a; 1. 優化工業設備的通訊效率&#xff1a;了解通訊協議的細節可以幫助我們找到通訊效率低下的原因并進行優化&#xff0c;提高設備的通訊效率和…

Axioss筆記

一、Get請求 // 請求頭攜帶參數&#xff0c;案例&#xff1a;?uid1001 axios.get(http://localhost:8080/user/api/v1/user/query, {params: {uid: 1001}}).then(res > {console.log(res.data) }).catch(err > {console.log("請求錯誤" err) }).finally(() …

MySQL 8 配置文件詳解與最佳實踐

MySQL 8 是一款強大的關系型數據庫管理系統&#xff0c;通過適當的配置文件設置&#xff0c;可以充分發揮其性能潛力。在這篇博客中&#xff0c;我們將深入探究 MySQL 8 常用的配置文件&#xff0c;并提供一些建議&#xff0c;幫助您優化數據庫性能。 配置文件概覽 在 MySQL …

【華為OD題庫-030】阿里巴巴找黃金寶箱(V)-java

題目 一貧如洗的樵夫阿里巴巴在去砍柴的路上&#xff0c;無意中發現了強盜集團的藏寶地&#xff0c;藏寶地有編號從0-N的箱子&#xff0c;每個箱子上面貼有一個數字.阿里巴巴念出一個咒語數字k(k<N),找出連續k個寶箱數字和的最大值&#xff0c;并輸出該最大值。 輸入描述 第…

攔截器的使用

攔截器&#xff08;Interceptor&#xff09;是一種在應用程序中用于干預、修改或攔截請求和響應的組件&#xff0c;是AOP 編程的一種實踐&#xff0c;和過濾器一樣都是一種具體的AOP實現。它可以在請求被發送到目標處理程序之前或之后&#xff0c;對請求進行預處理或對響應進行…

【數據結構】二叉樹概念 | 滿二叉樹 | 完全二叉樹

二叉樹的概念 二叉樹在實踐中用的很多。 一棵二叉樹是結點的一個有限集合&#xff0c;該集合&#xff1a; 或者為空&#xff1b;由一個根結點加上兩棵別稱為左子樹和右子樹的二叉樹組成。二叉樹最多兩個孩子。 這里注意&#xff1a;二叉樹并不是度為2的樹。 二叉樹的度最大值是…

Go lumberjack 日志輪換和管理

在開發應用程序時&#xff0c;記錄日志是一項關鍵的任務&#xff0c;以便在應用程序運行時追蹤問題、監視性能和保留審計記錄。Go 語言提供了靈活且強大的日志記錄功能&#xff0c;可以通過多種方式配置和使用。其中一個常用的日志記錄庫是 github.com/natefinch/lumberjack&am…

python selenium 模擬瀏覽器自動操作搶購腳本

每逢秒殺&#xff0c;都在遺憾網速和手速慢沒能搶購到商品吧。 手寫一個腳本&#xff0c;讓程序幫你搶&#xff0c;搶到的概率會大大提升。 廢話不多說&#xff0c;直接上代碼。 本實例以華為官網搶購手機為例 """ 模擬瀏覽器操作華為官網(1) 【只需要安裝一…

【JAVA】我們該如何規避代碼中可能出現的錯誤?(二)

個人主頁&#xff1a;【&#x1f60a;個人主頁】 系列專欄&#xff1a;【??初識JAVA】 文章目錄 前言異常方法&#xff08;Throwable類&#xff09;Throwable類的方法 捕獲異常多重捕獲塊 前言 異常是程序中的一些錯誤&#xff0c;但并不是所有的錯誤都是異常&#xff0c;并…

git-3

1.如何讓工作區的文件恢復為和暫存區一樣&#xff1f; 工作區所作的變更還不及暫存區的變更好&#xff0c;想從暫存區拷貝到工作區&#xff0c;變更工作區(恢復成和暫存區一樣的狀態)&#xff0c;想到用git checkout -- 文件名 2.怎樣取消暫存區部分文件的更改&#xff1f; 如…

無損壓縮技巧:減小PDF文件尺寸的有效方法

我們在制作pdf文檔的時候&#xff0c;會加入許多內容&#xff0c;文字、圖片等等&#xff0c;素材添加的過多之后就會導致pdf文檔特別大&#xff0c;在上傳或者儲存時&#xff0c;就會特別不方便&#xff0c;所以今天就告訴大家一個pdf壓縮的方法&#xff0c;使用pdf在線壓縮工…

4-Docker命令之docker info

后續為大家逐個講解一下docker常用命令及其相關用法。docker常用命令查看如下: [root@centos79 ~]# docker --helpUsage: docker [OPTIONS] COMMANDA self-sufficient runtime for containersCommon Commands:run Create and run a new container from an imageexec…

洛谷 P1883 函數

P1883 函數 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) Error Curves - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) 這兩題是一模一樣的&#xff0c;過一題水兩題。 分析 主要難點在于證明F(x)是一個單峰函數可以被三分&#xff0c;但是我隨便畫了幾個f(x)之后發現好像…

MySQL的Redo Log跟Binlog

文章目錄 概要Redo Log日志Redo Log的作用Redo Log的寫入機制 Binlog日志Binlog的作用Binlog寫入機制 兩段提交 概要 Redo Log和Binlog是MySQL日志系統中非常重要的兩種機制&#xff0c;也有很多相似之處&#xff0c;本文主要介紹兩者細節和區別。 Redo Log日志 Redo Log的作…

Docker+ Jenkins+Maven+git自動化部署

環境&#xff1a;Centos7 JDK1.8 Maven3.3.9 Git 2.40 Docker 20.10.17 準備工作&#xff1a; 安裝Docker Centos7默認的yum安裝的docker是1.13&#xff0c;版本太低&#xff0c;很多鏡像都要Docker版本要求&#xff0c;升級Docker版本。 卸載已安裝Docker: yum …

你知道如何實現游戲中的透視效果嗎?

引言 游戲中的透視效果可以合理運用CtrlCV實現。 不知道大家有沒有這樣一段經歷&#xff1a;在做Cocos項目時需要一些特定的Shader去做一些特定的效果&#xff0c;例如透視、高光、濾鏡等等&#xff0c;想自己寫吧&#xff0c;不怎么會啊&#xff0c;網上又找不到&#xff0c…

27 - 如何使用設計模式優化并發編程?

在我們使用多線程編程時&#xff0c;很多時候需要根據業務場景設計一套業務功能。其實&#xff0c;在多線程編程中&#xff0c;本身就存在很多成熟的功能設計模式&#xff0c;學好它們&#xff0c;用好它們&#xff0c;那就是如虎添翼了。今天我就帶你了解幾種并發編程中常用的…

redis-cluster集群(目的:高可用)

1、特點 集群由多個node節點組成&#xff0c;redis數據分布在這些節點中&#xff0c;在集群中分為主節點和從節點&#xff0c;一個主對應一個從&#xff0c;所有組的主從形成一個集群&#xff0c;每組的數據是獨立的&#xff0c;并且集群自帶哨兵模式 2、工作原理 集群模式中…

【ZedBoard學習實例1】 VGA顯示彩條

ZedBoard學習實例1 VGA顯示彩條 ZedBoard學習實例1 VGA顯示彩條參考文章改進 ZedBoard學習實例1 VGA顯示彩條 參考文章 彩條控制verilog代碼 主體參考了該文章的代碼&#xff0c;文中還介紹了相關的電路圖&#xff0c;還有ZedBoard的手冊內容。19201080分辨率顯示器的參數 針…