kubernetes之亲合性调度
目录
文章目录
- 目录
- 实验环境
- 实验软件
- 本节实践
- 调度
- 创建一个Pod的工作流程
- 1.架构图
- 2.剖析过程
- 3.Pod中影响调度的主要属性
- 4.调度器需要充分考虑诸多的因素
- 5.Kubernetes中的资源分配
- 6.Init container的资源需求
- 1、nodeSelector
- 2、亲和性和反亲和性调度
- 1.节点亲和性
- 2.pod 亲和性和pod 反亲和性
- 3、污点与容忍
- 4、nodeName
- 思考
- 1.不用 DaemonSet,如何使用 Deployment 是否实现同样的功能?
- 2.同样的如果想在每个节点(或指定的一些节点)上运行2个(或多个)Pod 副本,如何实现?
- 关于我
- 最后
实验环境
实验环境:
1、win10,vmwrokstation虚机;
2、k8s集群:3台centos7.6 1810虚机,1个master节点,2个node节点k8s version:v1.22.2containerd://1.5.5
实验软件
链接:https://pan.baidu.com/s/1P3Z_ujk22dYDXzM37WI5FA?pwd=v01w
提取码:v01w
2022.2.18-39.亲合性调度-实验代码.zip
本节实践
- 实践:nodeSelector测试(测试成功)-2022.5.16
- 实践:节点亲和性测试(测试成功)-2022.5.16
- 实践:pod亲和性(测试成功)-2022.5.16
- 实践:pod反亲和性(测试成功)-2022.5.16
- 实践:污点与容忍(测试成功)-2022.5.16
- 实践:nodeName测试(测试成功)-2022.5.16
调度
一般情况下我们部署的 Pod 是通过集群的自动调度策略来选择节点的,默认情况下调度器考虑的是资源足够,并且负载尽量平均。但是有的时候我们需要能够更加细粒度的去控制 Pod 的调度,比如我们希望一些机器学习的应用只跑在有 GPU 的节点上;但是有的时候我们的服务之间交流比较频繁,又希望能够将这服务的 Pod 都调度到同一个的节点上。这就需要使用一些调度方式来控制 Pod 的调度了,主要有两个概念:亲和性和反亲和性,亲和性又分成节点亲和性(nodeAffinity)和 Pod 亲和性(podAffinity)。
创建一个Pod的工作流程
1.架构图
Kubernetes基于list-watch机制
的控制器架构,实现组件间交互的解耦。
其他组件监控自己负责的资源,当这些资源发生变化时,kube-apiserver会通知这些组件,这个过程类似于发布与订阅
。
2.剖析过程
- 我们通过命令行创建一个pod:
- 当我们在执行命令
kubectl run pod4 --image=nginx
后,各组件之间的调用流程是如何的呢?
1、kubectl向apiserver发送一个创建pod的请求
2、apiserver接收到并向etcd写入存储,写入成功返回一个提示#这个过程类似于老板和顾客之间的关系:api-server:开店老板etcd:仓库其他组件:顾客
- 注意:如果在执行如下
kubectl run pod4 --image=nginx
命令时,卡着了,说明什么问题呢?
–>说明:
etcd数据库写入有问题/达到性能瓶颈,或者,api-server和etcd 2者总有一个有问题:
- 继续:scheduler向apiserver查询未分配的pod资源,通过自身调度算法选择一个合适的node进行绑定(给这个pod资源打一个标记,标记分配到node1)注意:它这个调度算法还是比较复杂、均匀一点的,它会考虑到你的机器的硬件配置,pod属性等等一些综合的属性;
- 问题:如果scheduler组件有问题,那么此时pod会出现什么状态?
答:pod会出现通过kubectl get pod
根本看不到你刚创建的pod信息的,更别说它的状态了,因为它根本没分配。
因此,如果你创建的pod信息根本看不到,那么会是哪个组件可能有问题?–>scheduler组件
可能出在问题。
如果是pending状态:pod是已经绑定到某个节点了。
继续流程讲解:
4、kubelet向apiserver查询分配到自己节点的pod,调用docker api(/var/run/docker.sock)创建容器
5、kubelet获取docker创建容器的状态,并汇报给apiserver,apiserver更新状态到etcd存储
6、kubectl get pods就能查看pod状态备注:
kubelet的功能主要是管理容器:这个是默认调用的docker api接口
[root@k8s-master ~]#ll /var/run/docker.sock
srw-rw---- 1 root docker 0 Jun 14 11:46 /var/run/docker.sock
- 问题:controller-manager为什么没用到?
controller-manager是用于管理控制器,例如deployment(rs)、service,因为创建的是一个pod,不受它管理。
如果controller-manager要放在这里,一般是放在etcd后面的:
- kube-proxy为什么没用到?
proxy是用于管理pod网络,例如service,因为没创建service。
kube-proxy的主要功能就是维护好service,service是k8s的抽象资源;
- 扩展
比如,这个容器创建的时候创建失败了,不是一个running状态,也不是一个pending状态。可能就是docker在启动容器时,用你那个镜像启动容器失败了。所以这是你需要用docker去run一个镜像看能不能起来。
3.Pod中影响调度的主要属性
⚠️ 注意
resources: {} 资源调度依据这个,挺重要的;
很多大厂都会去二开"schedulerName: default-scheduler"这个调度器的,会去加一些调度策略,进而完成他们的需求;
kubernetes之亲合性调度相关推荐
- Kubernetes 是如何调度的?
作者 | 阿文,责编 | 郭芮 头图 | CSDN 下载自东方IC 出品 | CSDN(ID:CSDNnews) 自互联网出现以来 ,云计算的概念已经提出了有 50 年.从1957 年,John Mc ...
- Kubernetes之Pod调度
本文讲的是Kubernetes之Pod调度[编者的话]Kubernetes调度器根据特定的算法与策略将pod调度到工作节点上.在默认情况下,Kubernetes调度器可以满足绝大多数需求,例如调度po ...
- [kubernetes] Schedule --- Node调度与隔离
目录 1. NodeSelector 2. 亲和与反亲和 Affinity and Anti-affinity 节点Node 亲和性 pod 亲和性和反亲和性 3. 污点(Taints)与容忍(to ...
- kubernetes 简介:调度器和调度算法((Affinity/Anti-Affinity, Taints and Tolerations, 自定义调度器 )
全栈工程师开发手册 (作者:栾鹏) 架构系列文章 简介 scheduler 是 kubernetes 的调度器,主要的任务是把定义的 pod 分配到集群的节点上.听起来非常简单,但有很多要考虑的问题: ...
- 二十、Kubernetes中Pod调度第二篇NodeAffinity详解、实例
1.概述 在默认情况下,一个Pod在哪个Node节点上运行,是由Scheduler组件采用相应的算法计算出来的,这个过程是不受人工控制的.但是在实际使用中,这并不满足的需求,因为很多情况下,我们想控制 ...
- Kubernetes对Pod调度指定Node以及Node的Taint 和 Toleration
1.指定pod到指定的node上 #1.1查看节点的lebel kubectl get nodes --show-labels#1.2获取到该节点的label信息 ip-10-100-2-80 Rea ...
- 实战:k8s之亲合性调度-2022.2.18
目录 文章目录 目录 实验环境 实验软件 1.调度 2.nodeSelector
- kubernetes调度器
目录 文章目录 目录 实验环境 实验软件 本节实践 前置知识 调度器 1.调度流程 1.默认调度器 2.扩展调度器(extender) 3.调度框架 1.扩展点(Extension Points) 2 ...
- Kubernetes — 调度系统
目录 文章目录 目录 调度系统 Kubernetes 调度器的设计 Kubernetes 调度器的工作流 Kubernetes 调度系统的未来 Scheduler Extender(调度器扩展) Mu ...
最新文章
- 2021年春季学期-信号与系统-第十四次作业参考答案-第二小题参考答案
- PhoneGap 安装体验
- CodeForces - 1198A MP3(尺取)
- java 高并发第三阶段实战_Java 高并发第三阶段实战---Java并发包深入解析与使用详解...
- php iis session 超时设置,如何配置IIS Session超时时间
- 用js实现一个无限循环的动画
- Linux操作系统使用基础03:Linux文件权限与目录配置
- okhttp教程——起步篇
- 阿里云飞天洛神:高性能网络软硬件一体化技术实践 | 凌云时刻
- dp动态规划解题套路 剑指offer 42连续子数组的最大和
- 使用Selenium实现直播平台的自动刷屏
- OTA再升级, 汽车云诊断风口将至,艾拉比早已“量产上车”
- 智齿客服Android集成流程,智齿客服接入_智齿客服客服系统如何接入网站_智齿客服接入流程_企业服务汇...
- 计算机病毒及其治疗的教案,计算机病毒教案(公开课)原创配套
- 为什么写技术博客对新人如此重要
- rtx3090ti什么水平 rtx3090ti显卡什么级别 rtx3090ti显卡怎么样
- 团灭了3个月的线下营销,还有希望吗?
- 你的金钱和时间流向哪,你的人生就什么样!
- html网页自动铺满屏幕,HTML+CSS入门 高度如何铺满全屏
- Rust 安装,卸载,nightly/stable版本切换(全局或工作空间),提高下载速度