应用背景:

使用kubeadm部署的kubernetes集群,其master节点默认拒绝将pod调度运行于其上的,加点官方的术语就是:master默认被赋予了一个或者多个“污点(taints)”,“污点”的作用是让该节点拒绝将pod调度运行于其上。那么存在某些情况,比如想让master也成为工作节点可以调度pod运行怎么办呢?

两种方式:①去掉“污点”(taints)【生产环境不推荐】;②让pod能够容忍(tolerations)该节点上的“污点”。

测试环境:

节点名称 节点类型 版本号 部署方式
kube-node-01 Master v1.11.2 kubeadm init
kube-node-02 Node v1.11.2 kubeadm join
kube-node-03 Node v1.11.2 kubeadm join

操作步骤:

1. 当前环境

[root@kube-node-01 ~]# kubectl get pod -o wide
No resources found.

2. 准备一个yaml文件创建pod(2副本)

[root@kube-node- ~]# kubectl apply -f test-springboot-rc.yaml  
replicationcontroller/test-springboot created
[root@kube-node- ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
test-springboot-6495q / Running 2m 10.244.2.113 kube-node- <none>
test-springboot-b5sq2 / Running 2m 10.244.1.76 kube-node- <none>

以上运行的2个pod分别被调度到节点2和节点3上,目前还不足以说明调度不到节点1上,继续操作;

3. 扩容pod副本观察

[root@kube-node- ~]# kubectl scale rc test-springboot --replicas=3
replicationcontroller/test-springboot scaled
[root@tlsw-pre- ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
test-springboot-6495q / Running 4m 10.244.2.113 kube-node- <none>
test-springboot-68qtw / Running 9s 10.244.2.114 kube-node- <none>
test-springboot-b5sq2 / Running 4m 10.244.1.76 kube-node- <none>

一般情况下,kubernetes的pod调度策略会尽量的安排相同的pod安排至不同的节点,上面推测因为节点1含有污点,pod不得不再次调度到节点2或者节点3上去。

再次测试默认调度,添加pod副本至5个:

[root@tlsw-pre- home]# kubectl scale rc test-springboot --replicas=5
replicationcontroller/test-springboot scaled
[root@tlsw-pre- home]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
test-springboot-4875k / Running 1m 10.244.1.77 kube-node- <none>
test-springboot-6495q / Running 14m 10.244.2.113 kube-node- <none>
test-springboot-68qtw / Running 10m 10.244.2.114 kube-node- <none>
test-springboot-b5sq2 / Running 14m 10.244.1.76 kube-node- <none>
test-springboot-hghwb / Running 1m 10.244.2.115 kube-node- <none>

以上显而易见,master节点(kube-node-01)上一直没有pod运行,因为含有“污点”作祟。

4. 查看master节点的容忍参数

[root@kube-node- ~]# kubectl describe node kube-node-01
……
Taints: node-role.kubernetes.io/master:NoSchedule
Unschedulable: false
……

5.添加污点容忍(并再次增加副本数至6)

根据容忍参数在pod对应的yaml文件中添加“容忍”段,如下:

…… 
replicas: 6   // 在当前的运行环境副本数(5个)上增加1个副本,用来观察pod调度
……
spec:
tolerations:
- key: node-role.kubernetes.io/master
operator: Exists
effect:
NoSchedule
containers:
- name: test-springboot
……
[root@tlsw-pre- home]# kubectl apply -f test-springboot-rc.yaml
replicationcontroller/test-springboot configured
[root@tlsw-pre- home]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE
test-springboot-4875k / Running 10m 10.244.1.77 kube-node-
test-springboot-6495q / Running 23m 10.244.2.113 kube-node-
test-springboot-68qtw / Running 19m 10.244.2.114 kube-node-
test-springboot-6pz2x / ContainerCreating 3s <none> kube-node-01
test-springboot-b5sq2 / Running 23m 10.244.1.76 kube-node-
test-springboot-hghwb / Running 10m 10.244.2.115 kube-node-

很明显,最新的一个pod已经调度至master节点,还在创建中,等待一下即可正常running。

结束.

kubernetes调度pod运行于master节点上的更多相关文章

  1. 八、指定节点pod运行在固定节点

    指定pod运行在固定节点 一.指定固定节点:Pod.spec.nodeName Pod.spec.nodeName 将 Pod 直接调度到指定的 Node 节点上,会跳过 Scheduler 的调度策 ...

  2. 记录一个奇葩的问题:k8s集群中master节点上部署一个单节点的nacos,导致master节点状态不在线

    情况详细描述; k8s集群,一台master,两台worker 在master节点上部署一个单节点的nacos,导致master节点状态不在线(不论是否修改nacos的默认端口号都会导致master节 ...

  3. Kubernetes集群部署之四Master节点部署

    Kubernetes Master节点部署三个服务:kube-apiserver.kube-controller-manager.kube-scheduler和一个命令工具kubectl. Maste ...

  4. 二进制安装 kubernetes 1.12(三) - 部署 Master 节点组件

    在Master节点部署组件 在部署Kubernetes之前一定要确保etcd.flannel.docker是正常工作的,否则先解决问题再继续. 创建 CA 证书 mkdir -p /iba/master ...

  5. k8s集群master节点上的flannel总是不定期重启的原因分析

    这个问题,困绕了团队一段时间, 因为暂时没有用到master的外网网络, 没有引起重视,但总归要解决. 上周五,刚好有点小空,就深入调查了一下. 最后,定位到了问题点:k8s master节点的fla ...

  6. kubernetes 将pod运行在某些特定的节点上,给节点打标签

    给节点打上标签: kubectl label node  <node_name> GPU=true   #打上标签 GPU=true 在创建pod的yaml文件时:  添加 nodeSel ...

  7. ES等待任务——是master节点上的task任务

    等待中的任务编辑 有一些任务只能由主节点去处理,比如创建一个新的 索引或者在集群中移动分片.由于一个集群中只能有一个主节点,所以只有这一节点可以处理集群级别的元数据变动.在 99.9999% 的时间里 ...

  8. 二、安装并配置Kubernetes Master节点

    1. 安装配置Master节点上的Kubernetes服务 1.1 安装Master节点上的Kubernetes服务 yum -y install kubernetes 1.2 修改kube-apis ...

  9. kubernetes之pod调度

    调度规则 deployment全自动调度: 运行在哪个节点上完全由master的scheduler经过一系列的算法计算得出, 用户无法进行干预 nodeselector定向调度: 指定pod调度到一些 ...

随机推荐

  1. GTX 750TI 使用 ffmpeg 时无法用 GPU HEVC(h.265) 进行加速

    官网版本好像不是能加速的,所以在github上找到一个已经带gpu加速的. https://github.com/illuspas/ffmpeg-hw-win32 GPU加速命令格式: ffmpeg. ...

  2. C# 委托还能这样用

    一直找不到一种能够让很多对象都能在几乎同时接收到通知的方法.介绍下目前在用的,希望能够抛砖引玉. 首先随便贴一下观察者模式的两接口,观察者模式自行搜索设计模式. public interface IS ...

  3. 数据库缓存mybatis,redis

    简介 处理并发问题的重点不在于你的设计是怎样的,而在于你要评估你的并发,并在并发范围内处理.你预估你的并发是多少,然后测试r+m是否支持.缓存的目的是为了应对普通对象数据库的读写限制,依托与nosql ...

  4. 03 入门 - 安装MVC 5和创建应用程序

    目录索引:<ASP.NET MVC 5 高级编程>学习笔记 本篇内容: 1. ASP.NET MVC 5的软件需求 2. 安装ASP.NET MVC 5 1)安装MVC 5开发组件 2)服 ...

  5. html 表单input录入内容校验

    <p>文本框只能输入数字代码(小数点也不能输入)</p><input onkeyup="this.value=this.value.replace(/\D/g, ...

  6. 浅谈SQL Server数据内部表现形式

    在上篇文章 浅谈SQL Server内部运行机制 中,与大家分享了SQL Server内部运行机制,通过上次的分享,相信大家已经能解决如下几个问题: 1.SQL Server 体系结构由哪几部分组成? ...

  7. Webdriver之API详解(3)

    前言 前两篇API链接 https://www.cnblogs.com/linuxchao/p/linuxchao-selenium-apione.html https://www.cnblogs.c ...

  8. MATLAB中“fitgmdist”的用法及其GMM聚类算法

    MATLAB中“fitgmdist”的用法及其GMM聚类算法 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 高斯混合模型的基本原理:聚类——GMM,MA ...

  9. An interesting combinational problem

    A question of details in the solution at the end of this post of the question is asked by me at MSE. ...

  10. ginput函数用法

    1.ginput函数:获取指定点坐标值 2.用法说明 (1)[x,y] = ginput(n) 函数从当前的坐标轴上选择n个点,并返回这n个点相应的坐标值(x,y).这n个点可由鼠标定位.用户可以按下 ...