当前位置:网站首页>【云原生--Kubernetes】调度约束
【云原生--Kubernetes】调度约束
2022-08-04 23:48:00 【Sq夏颜】
文章目录
一. list-watch机制
1.1 list-watch介绍
- Kubernetes 是通过 List-Watch 的机制进行每个组件的协作,保持数据同步的,每个组件之间的设计实现了解耦。
- 用户是通过 kubectl 根据配置文件,向 APIServer 发送命令,在 Node 节点上面建立 Pod 和 Container。
APIServer 经过 API 调用,权限控制,调用资源和存储资源的过程,实际上还没有真正开始部署应用。这里需要 Controller Manager、Scheduler 和 kubelet 的协助才能完成整个部署过程。 - 在 Kubernetes 中,所有部署的信息都会写到 etcd 中保存。实际上 etcd 在存储部署信息的时候,会发送 Create事件给 APIServer,而 APIServer 会通过监听(Watch)etcd发过来的事件。其他组件也会监听(Watch)APIServer 发出来的事件。
1.2 list-watch工作流程
Pod是Kubernetes的基础单元,Pod 启动典型创建过程如下:
- 这里有三个 List-Watch,分别是 Controller Manager(运行在 Master),Scheduler(运行在Master),kubelet(运行在 Node)。他们在进程已启动就会监听(Watch)APIServer 发出来的事件。
- 用户通过 kubectl 或其他 API 客户端提交请求给 APIServer 来建立一个 Pod 对象副本。
- APIServer 尝试着将 Pod 对象的相关元信息存入 etcd 中,待写入操作执行完成,APIServer即会返回确认信息至客户端。
- 当 etcd 接受创建 Pod 信息以后,会发送一个 Create 事件给 APIServer。
- 由于 Controller Manager 一直在监听(Watch,通过http的8080端口)APIServer 中的事件。此时APIServer 接受到了 Create 事件,又会发送给 Controller Manager。
- Controller Manager 在接到 Create 事件以后,调用其中的 Replication Controller 来保证Node 上面需要创建的副本数量。一旦副本数量少于 RC 中定义的数量,RC 会自动创建副本。总之它是保证副本数量的Controller(PS:扩容缩容的担当)。
- 在 Controller Manager 创建 Pod 副本以后,APIServer 会在 etcd 中记录这个 Pod的详细信息。例如 Pod 的副本数,Container 的内容是什么。
- 同样的 etcd 会将创建 Pod 的信息通过事件发送给 APIServer。
- 由于 Scheduler 在监听(Watch)APIServer,并且它在系统中起到了“承上启下”的作用,“承上”是指它负责接收创建的Pod 事件,为其安排 Node;“启下”是指安置工作完成后,Node 上的 kubelet 进程会接管后继工作,负责 Pod生命周期中的“下半生”。 换句话说,Scheduler 的作用是将待调度的 Pod 按照调度算法和策略绑定到集群中 Node 上。
- Scheduler 调度完毕以后会更新 Pod 的信息,此时的信息更加丰富了。除了知道 Pod 的副本数量,副本内容。还知道部署到哪个Node 上面了。并将上面的 Pod 信息更新至 API Server,由 APIServer 更新至 etcd 中,保存起来。
- etcd 将更新成功的事件发送给 APIServer,APIServer 也开始反映此 Pod 对象的调度结果。
- kubelet 是在 Node 上面运行的进程,它也通过 List-Watch的方式监听(Watch,通过https的6443端口)APIServer 发送的 Pod 更新的事件。kubelet会尝试在当前节点上调用 Docker 启动容器,并将 Pod 以及容器的结果状态回送至 APIServer。
- APIServer 将 Pod 状态信息存入 etcd 中。在 etcd确认写入操作成功完成后,APIServer将确认信息发送至相关的 kubelet,事件将通过它被接受。
注意:在创建 Pod 的工作就已经完成了后,为什么 kubelet 还要一直监听呢?原因很简单,假设这个时候 kubectl 发命令,要扩充 Pod 副本数量,那么上面的流程又会触发一遍,kubelet 会根据最新的 Pod 的部署情况调整 Node 的资源。又或者 Pod 副本数量没有发生变化,但是其中的镜像文件升级了,kubelet 也会自动获取最新的镜像文件并且加载。
二. 调度约束(scheducer调度器)
Kubernetes通过list-watch的机制进行每个组件的协作,每个组件之间的设计实现了解耦。
2.1 基本调度方式
- nodeName用于将Pod调度到指定的Node名称上(跳过调度器直接分配)
- nodeSelector用于将Pod调度到匹配Label的Node上
2.2 nodeName
apiVersion: v1
kind: Pod
metadata:
name: pod-example
labels:
app: nginx
spec:
nodeName: node1
containers:
- name: nginx
image: nginx:1.15
kubectl create -f nodeName.yaml
#查看详细信息
kubectl describe pod pod-example
2.3 nodeSelector
#查看标签用法
kubectl label --help
Usage:
kubectl label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N
[--resource-version=version] [options]
创建一个标签
kubectl label nodes k8s-node2 xy=xiayan
#查看标签
kubectl get nodes --show-labels
apiVersion: v1
kind: Pod
metadata:
name: pod-example
labels:
app: nginx
spec:
nodeSelector:
xy: xiayan
containers:
- name: nginx
image: nginx:1.15
kubectl apply -f nodeSelector.yaml
kubectl describe pod pod-example
边栏推荐
- Laravel 实现redis分布式锁
- MySQL基础篇【聚合函数】
- C5750X7R2E105K230KA(电容器)MSP430F5249IRGCR微控制器资料
- 2022年华数杯数学建模
- The role of @Async annotation and how to implement asynchronous listening mechanism
- Flutter启动流程(Skia引擎)介绍与使用
- C语言实现扫雷 附带源代码
- SQL association table update
- LeetCode Hot 100
- [CVA Valuation Training Camp] Financial Modeling Guide - Lecture 1
猜你喜欢
Pytorch分布式训练/多卡/多GPU训练DDP的torch.distributed.launch和torchrun
uniapp动态实现滑动导航效果demo(整理)
KT6368A蓝牙的认证问题_FCC和BQB_CE_KC认证或者其它说明
KT148A语音芯片怎么烧录语音进入芯片里面通过串口和电脑端的工具
Go 语言快速入门指南:什么是 TSL 安全传输层
Since a new byte of 20K came out, I have seen what the ceiling is
招标公告 | 海纳百创公众号运维项目
Vscode连接远程服务器(一套配置成功)
jenkins发送邮件系统配置
[Cultivation of internal skills of string functions] strncpy + strncat + strncmp (2)
随机推荐
#yyds干货盘点#交换设备丢包严重的故障处理
加解密在线工具和进制转化在线工具
线程三连鞭之“线程的状态”
PID Controller Improvement Notes No. 7: Improve the anti-overshoot setting of the PID controller
Security software Avast and Symantec NortonLifeLock merge with UK approval, market value soars 43%
[Cultivation of internal skills of string functions] strcpy + strcat + strcmp (1)
4 - "PyTorch Deep Learning Practice" - Backpropagation
未上市就“一举成名”,空间媲美途昂,安全、舒适一个不落
C5750X7R2E105K230KA(电容器)MSP430F5249IRGCR微控制器资料
【无标题】线程三连鞭之“线程池”
【软件测试】常用ADB命令
Chinese and Japanese color style
吐槽 | 参加IT培训的正确姿势
golang 协程的实现原理
KT6368A Bluetooth certification problem_FCC and BQB_CE_KC certification or other instructions
情侣牵手[贪心 & 抽象]
Statistical words (DAY 101) Huazhong University of Science and Technology postgraduate examination questions
365天深度学习训练营-学习线路
[QNX Hypervisor 2.2用户手册]10.6 vdev mc146818
Mathematical Principles of Matrix