解决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节点了:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/184736.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

30㎡新中式大横厅|方寸之间,诉说东方写意生活。福州中宅装饰,福州装修

今天要分享的是一个新中式风格的客厅装修&#xff0c;它的开间是4.5米&#xff0c;进深是6.5米。设计中有许多亮点&#xff0c;让我们一起来看看。 1️⃣ 首先&#xff0c;这个客厅采用了双眼皮无主灯吊顶的设计&#xff0c;让整个空间看起来更加高挑宽敞。吊顶的边缘线条简洁明…

Unity UGUI图片锯齿严重怎么解决

在开发的时候&#xff0c;发现图片锯齿严重&#xff0c;打包到移动端或者在编辑器都这样&#xff0c;如下图 原因&#xff1a; 查了一些资料&#xff0c;找到了原因如下&#xff1a;关于为什么会发生这种情况&#xff1a;看起来你的源资源比你在屏幕上显示的大小大得多。所以当…

Android设计模式--适配器模式

至诚之道&#xff0c;可以前知 一&#xff0c;定义 适配器模式把一个类的接口变换成客户端所期待的另一种接口&#xff0c;从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 适配器模式在我们的开发中使用率极高&#xff0c;ListView&#xff0c;GridView&am…

unity Toggle,初始时默认不选中,若选中则不可取消选中。不写码实现其效果

实现效果&#xff1a; 初始默认时&#xff1a; 选中时&#xff1a; 零代码实现&#xff1a; 步骤1 步骤2 步骤3

日常生活小技巧 -- Win10 系统安装 Linux 子系统

最新要在win10系统安装linux子系统&#xff0c;看一下教程。 参看&#xff1a;Win10 系统安装 Linux 子系统教程(WSL2 Ubuntu 20.04 Gnome 桌面 &#xff09; 1、开启开发人员模式 2、适用于linux的Windows子系统 勾选下图三个选项&#xff0c;重启。 3、安装 Ubuntu 创建…

Leetcode199. 二叉树的右视图

Every day a Leetcode 题目来源&#xff1a;199. 二叉树的右视图 解法1&#xff1a;层序遍历 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 按层序遍历&#xff0c;将每层的…

『接口测试干货』| Newman+Postman接口自动化测试完整过程

『接口测试干货』| NewmanPostman接口自动化测试完整过程 1 Newman简介2 如何安装Newman&#xff1f;2.1 安装NodeJs2.2 安装Newman2.2 解决Newman不是内部命令 3 Newman使用3.1 Newman如何运行集合&#xff1f;3.2 如何查看帮助文档&#xff1f;3.3 环境变量设置3.4 关于全局变…

Win10系统Steam错误代码118的解决教程

在Win10系统中&#xff0c;用户可以打开Steam平台搜索喜欢的游戏&#xff0c;点击开始畅玩。但是&#xff0c;有用户反映自己在Steam平台上操作的时候&#xff0c;收到了错误代码118的提示&#xff0c;导致自己没有办法正常进行操作。接下来小编给大家详细介绍关于解决Win10系统…

MariaDB(基础信息)

文章目录 一、MariaDB1、基本信息2、存储引擎3、兼容性》MySQL、Postgres、MongoDB 和 Oracle4、直接连接其他数据源5、等等等。。。。。。。。。。。。。。。。。。。。。 二、操作和mysql一样参考文章 --------------------机翻内容仅供参考------------------------- 一、…

linux基础5:linux进程1(冯诺依曼体系结构+os管理+进程状态1)

冯诺依曼体系结构os管理 一.冯诺依曼体系结构&#xff1a;1.简单介绍&#xff08;准备一&#xff09;2.场景&#xff1a;1.程序的运行&#xff1a;2.登录qq发送消息&#xff1a; 3.为什么需要内存&#xff1a;1.简单的引入&#xff1a;2.计算机存储体系&#xff1a;3.内存的意义…

【广州华锐互动】利用VR体验环保低碳生活能带来哪些教育意义?

随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已经逐渐走进了我们的生活。从游戏娱乐到教育培训&#xff0c;VR技术的应用范围越来越广泛。而在这个追求绿色、环保的时代&#xff0c;VR技术也为我们带来了一种全新的环保低碳生活方式。让我们一起走进…

企业微信web登录实现

企业微信登录流程 实现方式 使用js-sdk 使用 wecom/jssdk 初始化企业微信登录组件。 为了满足网站定制化的需求&#xff0c;我们支持将企业微信登录组件内嵌到开发者的网站中。用户使用企业微信登录授权后&#xff0c;登录组件将 auth code 返回给网站。 企业微信登录组件主…

Android开发从0开始(广播)

应用广播 发送标准广播的三步骤 发送标准广播&#xff1a; //发送标准广播 Intent intent new Intent("com.dongnaoedu.chapter09.standard"); sendBroadcast(intent); 定义广播接受者: public class StanderdReceiver extends BroadcastReceiver { public s…

ECharts与DataV:数据可视化的得力助手

文章目录 引言一、ECharts简介优势&#xff1a;劣势&#xff1a; 二、DataV简介优势&#xff1a;劣势&#xff1a; 三、ECharts与DataV的联系四、区别与选择五、如何选择根据需求选择技术栈考虑预算和商业考虑 结论我是将军&#xff0c;我一直都在&#xff0c;。&#xff01; 引…

关于进制的转化

二进制转十进制&#xff1a; &#x1f530; 方法一&#xff1a;二进制转十进制&#xff0c;用各数的码位与位权的乘积之和&#xff0c;说白了就是用从右到左的每个数去乘以2的幂次方&#xff08;最右边是0&#xff09;&#xff0c;然后就所有的数相加。 补充&#xff1a;位权是…

多模态常见任务介绍

视觉问答&#xff08;VQA&#xff0c; Visual Question Answer&#xff09; 目标&#xff1a;给定一个图片以及问题&#xff0c;需要理解图片的内容并基于此用自然语言回答问题。 例如&#xff0c;图像中发生什么事&#xff0c;人物穿的衣服是什么颜色&#xff0c;图像中有多…

在Windows系统上安装git-Git的过程记录

01-上git的官网下载git的windows安装版本 下载页面链接&#xff1a; https://git-scm.com/downloads 选择Standalone Installer的版本进行下载&#xff1a; 这里给大家一全git-2.43.0的百度网盘下载链接&#xff1a; https://pan.baidu.com/s/11HwNTCZmtSWj0VG2x60HIA?pwdut…

【DDS】OpenDDS配置与使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍OpenDDS配置与使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更…

【译】Spring 6 入参数据校验: 综合指南

原文地址&#xff1a;Spring 6 Programmatic Validator: A Comprehensive Guide 一、前言 在 Spring 6.1 中&#xff0c;有一个非常值得注意的重要改进——编程式验证器实现。Spring 长期以来一直通过注解支持声明式验证&#xff0c;而 Spring 6.1 则通过提供专用的编程式验证…

【挑战业余一周拿证】AWS 认证云从业者 - 基础(AWS Certified Cloud Practitioner- Foundational)

一、前言 二、开支记录 三、活动时间 四、活动任务 五、关注订阅号 六、如何报名 Q: 我想参加CSDN 孵化器活动&#xff0c;如何报名&#xff1f; Q: 我想正式报考AWS认证考试&#xff0c;该怎么办&#xff1f; Q: 如何领取考试券&#xff1f; Q: 本次活动考试的费用是…