kubernetes调度pod运行于master节点上
应用背景:
使用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节点上的更多相关文章
- 八、指定节点pod运行在固定节点
指定pod运行在固定节点 一.指定固定节点:Pod.spec.nodeName Pod.spec.nodeName 将 Pod 直接调度到指定的 Node 节点上,会跳过 Scheduler 的调度策 ...
- 记录一个奇葩的问题:k8s集群中master节点上部署一个单节点的nacos,导致master节点状态不在线
情况详细描述; k8s集群,一台master,两台worker 在master节点上部署一个单节点的nacos,导致master节点状态不在线(不论是否修改nacos的默认端口号都会导致master节 ...
- Kubernetes集群部署之四Master节点部署
Kubernetes Master节点部署三个服务:kube-apiserver.kube-controller-manager.kube-scheduler和一个命令工具kubectl. Maste ...
- 二进制安装 kubernetes 1.12(三) - 部署 Master 节点组件
在Master节点部署组件 在部署Kubernetes之前一定要确保etcd.flannel.docker是正常工作的,否则先解决问题再继续. 创建 CA 证书 mkdir -p /iba/master ...
- k8s集群master节点上的flannel总是不定期重启的原因分析
这个问题,困绕了团队一段时间, 因为暂时没有用到master的外网网络, 没有引起重视,但总归要解决. 上周五,刚好有点小空,就深入调查了一下. 最后,定位到了问题点:k8s master节点的fla ...
- kubernetes 将pod运行在某些特定的节点上,给节点打标签
给节点打上标签: kubectl label node <node_name> GPU=true #打上标签 GPU=true 在创建pod的yaml文件时: 添加 nodeSel ...
- ES等待任务——是master节点上的task任务
等待中的任务编辑 有一些任务只能由主节点去处理,比如创建一个新的 索引或者在集群中移动分片.由于一个集群中只能有一个主节点,所以只有这一节点可以处理集群级别的元数据变动.在 99.9999% 的时间里 ...
- 二、安装并配置Kubernetes Master节点
1. 安装配置Master节点上的Kubernetes服务 1.1 安装Master节点上的Kubernetes服务 yum -y install kubernetes 1.2 修改kube-apis ...
- kubernetes之pod调度
调度规则 deployment全自动调度: 运行在哪个节点上完全由master的scheduler经过一系列的算法计算得出, 用户无法进行干预 nodeselector定向调度: 指定pod调度到一些 ...
随机推荐
- GTX 750TI 使用 ffmpeg 时无法用 GPU HEVC(h.265) 进行加速
官网版本好像不是能加速的,所以在github上找到一个已经带gpu加速的. https://github.com/illuspas/ffmpeg-hw-win32 GPU加速命令格式: ffmpeg. ...
- C# 委托还能这样用
一直找不到一种能够让很多对象都能在几乎同时接收到通知的方法.介绍下目前在用的,希望能够抛砖引玉. 首先随便贴一下观察者模式的两接口,观察者模式自行搜索设计模式. public interface IS ...
- 数据库缓存mybatis,redis
简介 处理并发问题的重点不在于你的设计是怎样的,而在于你要评估你的并发,并在并发范围内处理.你预估你的并发是多少,然后测试r+m是否支持.缓存的目的是为了应对普通对象数据库的读写限制,依托与nosql ...
- 03 入门 - 安装MVC 5和创建应用程序
目录索引:<ASP.NET MVC 5 高级编程>学习笔记 本篇内容: 1. ASP.NET MVC 5的软件需求 2. 安装ASP.NET MVC 5 1)安装MVC 5开发组件 2)服 ...
- html 表单input录入内容校验
<p>文本框只能输入数字代码(小数点也不能输入)</p><input onkeyup="this.value=this.value.replace(/\D/g, ...
- 浅谈SQL Server数据内部表现形式
在上篇文章 浅谈SQL Server内部运行机制 中,与大家分享了SQL Server内部运行机制,通过上次的分享,相信大家已经能解决如下几个问题: 1.SQL Server 体系结构由哪几部分组成? ...
- Webdriver之API详解(3)
前言 前两篇API链接 https://www.cnblogs.com/linuxchao/p/linuxchao-selenium-apione.html https://www.cnblogs.c ...
- MATLAB中“fitgmdist”的用法及其GMM聚类算法
MATLAB中“fitgmdist”的用法及其GMM聚类算法 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 高斯混合模型的基本原理:聚类——GMM,MA ...
- 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. ...
- ginput函数用法
1.ginput函数:获取指定点坐标值 2.用法说明 (1)[x,y] = ginput(n) 函数从当前的坐标轴上选择n个点,并返回这n个点相应的坐标值(x,y).这n个点可由鼠标定位.用户可以按下 ...