网站首页 > 技术文章 正文
自动扩缩容 需求背景 为了处理突发而不可预测的流量增长
Kubernetes 可以监控你的 pod
并在检测到 CPU 使用率或其他度量增长时自动对它们扩容
k8s提供的解决方案
1、每个节点上的cAdvisor组件收集每pod上的监控数据
2、Heapster聚集每个cAdvisor收集到的监控数据
3、Autoscaler从Heapster得到监控数据
根据计算结果调整副本数量
4、计算出最新的 pod 数量后
它会去更新 Scale 资源的 replicas 字段
剩下的工作就由 Replication 控制器、调度器、kublet 来完成
如何计算副本数
集群扩容-增加新节点 HPA 在需要的时候会创建更多的 pod 实例
但万一所有的节点都满了,放不下更多 pod 了
则集群需要扩容了即往集群中增加新的节点
- 发现未被调度的pod
- 找可用节点
- 在该节点上调度该pod
autoscaler减少节点数目
如果某个节点上所有 pod 请求的CPU、内存都不到 50%,
该节点即被认定为不再需要
什么情况下该节点不可被回收
如果节点上有系统 pod 在运行、
对非托管 pod,、以及有本地存储的 pod
该节点不可被归还
否则就会造成这些 pod 提供的服务中断
即只有当 Cluster Autoscaler 知道节点上运行的 pod 能够重新调度到其他节点
该节点才会被归还
节点被选中下线的流程
当一个节点被选中下线
它首先会被标记为不可调度
ReplicaSet或者其他控制器
创建替代pod并调度到其他剩下的节点
污点和容忍机制 节点声明一个NoSchedule类型的污点
类似于 男女朋友要结婚之前
男朋友身上有很多缺点
女朋友要考虑下我是否能够容忍男朋友上的缺点
如果容忍则结婚
不能容忍则分手
节点声明一个PreferNoSchedule类型的污点 表示尽量阻止 pod 被调度到这个节点上
但是如果没有其他节点可以调度
pod 依然会被调度到这个节点上
pod1: 和节点2说 我可以调度该这个节点嘛?
节点2: 我这边没有房间了 都住满了
pod1: 和节点1说 没有其他节点"收留"我了
您就行行好吧
节点1: 勉为其难的说那好吧
也类比
大学生刚出校门
能不给家里要钱就不要钱
实际挣不到钱 没办法生存了
再向家里要钱
节点声明一个NoExecute类型的污点
节点运行期间
如果在一个节点上添加了 NoExecute 污点
那些在该节点上运行着的 pod,
如果没有容忍这个 NoExecute 污点
将会从这个节点去除
类比
一位将军有几个心腹
某一次打了败仗
将军性情大变
这些心腹中如果能容忍将军的这一变化
就继续跟着将军
如果忍受不了
则会离开将军
另谋高就
亲缘性机制
nodeSelector
类比:
你对象有很多备胎
但她就一心一意想嫁给你
亲缘性机制
类比:
你对象有很多备胎
她有80%嫁给你的概率
有20%嫁给备胎的概率
补充
1、还有非亲缘性机制让pod调度在不同的节点上
2、可以给节点设置机架标签 让所有pod调度在同一个机架上
联合集群
需求背景
为确保你不受数据中心级别故障的影响
应用程序应同时部署在多个数据中心或云可用区域中
当其中一个数据中心或可用区域变得不可用时
可将客户端请求路由到运行在其余健康数据中心或区域中的应用程序
1、数据中心1中有一个k8s集群
数据中心2中有一个k8s集群(目的做数据灾备使用)
2、通过公共的控制面板来管理超级集群中的2个节点(每个节点代表一个k8s集群)
3、超级集群的唯一的访问入口是ingress
两种数据处理模式
数据同步
控制面板在集群1上做资源操作
集群1将数据同步到集群2
统一分配
通过控制面板发出创建10个pod的指令
每个集群分别创建5个
猜你喜欢
- 2024-10-10 K8S集群metrics-server组件安装 k8s集群包含哪些组件
- 2024-10-10 第6课 Kubernetes之深入掌握Pod机制及应用
- 2024-10-10 万字长文 | 使用 RBAC 限制对 Kubernetes 资源的访问
- 2024-10-10 Kubernetes:监控指南 kubernetes 监控
- 2024-10-10 《蹲坑学K8S》之21-1:Metrics-Server监控
- 2024-10-10 K8S架构设计及工作流程分析 k8s 结构图
- 2024-10-10 Metrics Server 快速安装 melsoft安装教程
- 2024-10-10 K8S系统的监控及HPA控制器 k8s dashboard 监控
- 2024-10-10 如何通过在多个Vagrant管理的虚拟机上部署多节点Kubernetes集群
- 2024-10-10 Kubernetes集群的自动水平伸缩 kubernetes 自动伸缩
你 发表评论:
欢迎- 最近发表
-
- 在 Spring Boot 项目中使用 activiti
- 开箱即用-activiti流程引擎(active 流程引擎)
- 在springBoot项目中整合使用activiti
- activiti中的网关是干什么的?(activiti包含网关)
- SpringBoot集成工作流Activiti(完整源码和配套文档)
- Activiti工作流介绍及使用(activiti工作流会签)
- SpringBoot集成工作流Activiti(实际项目演示)
- activiti工作流引擎(activiti工作流引擎怎么用)
- 工作流Activiti初体验及在数据库中生成的表
- Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)