网站首页 > 技术文章 正文
Kubernetes架构设计
核心组件
- api server 功能
- controller manager
负责维护集群的状态
- scheduler
负责资源的调度
按照预定的调度策略将Pod调度到相应的机器上
- kubelet
- Container runtime
- kube-proxy
为Service提供cluster内部的服务发现和负载均衡
Add-ons
- kube-dns负责为整个集群提供DNS服务
- Ingress Controller为服务提供外网入口
- Heapster提供资源监控
- Dashboard提供GUI
- Federation提供跨可用区的集群
- Fluentd-elasticsearch提供集群日志采集、存储与查询
K8S分层结构
生态系统
在接口层之上的庞大容器集群管理调度的生态系统
接口层
管理层
应用层
核心层
K8S工作流程分析
时序图
- kubectl提交部署申请
- replication 创建指定数量的pod
- scheduler将pod调度到节点
- 节点上的kubelet管理pod的生命周期
kubeproxy
1、
kubeproxy运行在集群各个主机上
管理网络通信,服务发现,负载均衡
2、
当有数据发送到主机时
其将路由到正确的pod或容器
3、
对于主机上发出的数据
它可以基于请求地址发现远程服务器
并将数据正确路由
4、
在某些情况下会使用轮询调度算法将请求发送到集群中的多个实例
Api Server的工作流程
- 数据验证
- 根据不同的资源类型找对应的handler处理器
- yaml文件转换成处理对象
- 验证对象属性的合法性
- 将合法对象保存到etcd中
Controller的工作流程
1、controller和apiserver通过Informer建立连接
(创建Informer的时候 需要传递一个networkClient对象 用于两者之间建立连接)
2、Informer的Reflector负责维护这个连接
有了连接之后就可以监听apiserver中的数据变化了
通过ListAndWatch方法获取并监听API对象实例的变化
3、在ListAndWatch机制下
一旦APIServer有新的API实例被创建、删除或者更新
Reflector都会收到“事件通知”
4、该事件和它所对应的API对象这个组合
就被称为增量(Delta)
它被放进一个Delta FIFO Queue中
(api对象中的key会放入工作队列中)
5、Informer会从这个队列中读取增量
每拿到一个增量
Informer就会判断这个增量里的事件类型
然后创建或者更新本地对象缓存(Store)
并且Informer会根据这个事件类型
触发事先注册好的ResourceEventHandler
这些Handler需要在创建控制器的时候注册给它对应的Informer
controller大致工作流程
猜你喜欢
- 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 Metrics Server 快速安装 melsoft安装教程
- 2024-10-10 K8S系统的监控及HPA控制器 k8s dashboard 监控
- 2024-10-10 如何通过在多个Vagrant管理的虚拟机上部署多节点Kubernetes集群
- 2024-10-10 Kubernetes集群的自动水平伸缩 kubernetes 自动伸缩
- 2024-10-10 2. Kubernetes设计架构(转载) kubernetes基础
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 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)
本文暂时没有评论,来添加一个吧(●'◡'●)