k8s架构原理
发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,一、k8s架构图二、k8s架构模式:master(cluster)/worker(node)架构master组件:1.kube-apiserver:提供restful接口指令供客户端或者其他组件调用,
千家信息网最后更新 2024年11月26日k8s架构原理
一、k8s架构图
二、k8s架构模式:
master(cluster)/worker(node)架构
master组件:
1.kube-apiserver:
提供restful接口指令供客户端或者其他组件调用,客户端指的是kubectl命令行工具,其他通信组件包括controller和scheduler
2.etcd:
负责存储集群状态
3.controller
管理并实现k8s的的各种流程,使用k8s管理容器,而不是直接使用容器,目的就是为容器提供统一编排,为用户提供声明式的调用,k8s维护着用户的期望,用户只要告诉k8s需要几个服务,需要什么配置就可以了,不需要关心底层k8s怎么实现的,但是k8s除了正常的创建管理,还伴随着异常情况的发生,比如容器挂掉,网络不通等,这时候需要controller监控资源状态等信息并更新到etcd,controller相当于运维工程师的角色.k8s把各种操作都认为是某种类型的某个方法,从而将不同的操作分给不同的方法执行,k8s认为一切皆资源,繁复的内容抽象成不同的资源放到不同的方法上执行
4.Scheduler
资源调度,根据系统资源的使用情况,将pod合理分配到相应的node节点,并通过apiserve告知etcd更新数据库
worker组件:
1.kubelet
controller如何监控不通资源信息,Scheduler如何给pod分配资源,实际的操作都是交给kubelet来完成的,例如,创建pod,删除pod,创建数据卷等
2.kube-proxy
按照用户的期望创建好环境,pod容器怎么才能对外提供服务? pod生成是会自动分配一个ip,但这个ip是动态生成的,并不固定,这时就需要一个固定ip代理pod来对外提供服务,这个就是service资源,扮演者服务发现和负载均衡的功能。但是service怎么代理到pod上呢?这时就需要core-dns,为新创建的pod注册动态DNS。给pod的service添加iptables/ipvs规则,用于服务发现和负载均衡,所有网络相关的请求响应都有kube-proxy代理完成
3.container runtime
负责容器运行
三、工作流程
1.创建pod
- apiserver接收到用户创建pod的请求,会根据用户提交的参数值创建pod对象,apiserver检测用户提交的参数,参数不合规则创建失败
- pod对象创建成功后,etcd会持久化这个对象,测试pod处于pending状态
- Scheduler会通过list-watch机制 调用apiserver监听etcd数据变化,如果发现有个pod未bind到node上,就会读取etcd存储的pod信息,根据策略算法,将pod调度到相应的node上
- 此时各node也会通过kubectl调用apiserver接口监听etcd对象状态变化,被分配到的node发现当前的node状态,和用户期望的状态有个pod不一致,他就会创建pod(包括挂载数据卷,创建pause容器接管应用容器网络),创建成功后,会将信息通过apiserver更新到etcd中.
2.controller创建pod
第1步成功之后,需要controller接手监控工作
用户期望pod副本数是3,但此时宕掉一个pod, controller loop 监测到 etcd 中存储的对象状态有些与系统 current state 不一致(此例例⼦子中就 是那个宕掉的容器器导致的), replicationController, replicaSet, deployment 等等定义必须有 3 个容器, 然⽽目前系统只有 2 个 running, 然后通过对应的⽤用户定义时存储在 etcd 的对象类 型, 相应的controller 会去响应, 发现少了了 1 个容器器, 需要创建 1 个新容器器时, 由该 controller 请求 api server 创建新容器,接下来跟第一步相同
总结:
- etcd 仅能通过 api server 访问
- etcd 中通过 api server 来保证存储数据是结构化的
- controller, scheduler, kubelet, kube-proxy 这些组件都是实质上都是通过 watch etcd 中存储的对象状态来进⾏行行对应⼯工作的, 但是必须通过 api server; 他们之间是没有调度的 上下级关系的, ⽽而是通过 etcd 对象状态的变化来触发对应的 event 处理理
- k8s 内部⼯工作的机制实质是维持⽤用户提交的期望 (存储在 etcd) 与系统当前状态⼀一致
- k8s 中有个 control loop ⼀一直循环监控着系统状态
容器
状态
用户
对象
资源
存储
数据
系统
组件
服务
期望
不同
信息
分配
工作
监控
架构
一致
成功
参数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
新华互联网科技股
十大网络安全上市公司市值
网络安全防护用品专项整治
连江网络安全
组织网络安全培训情况报告
吴桥服务器在哪
列车运行控制系统网络安全
华为云数据库
软件开发工具审计的目的
数据库所有设备信息
服务器和家用电脑主板一样吗
国家网络安全周记
软件开发维护费 合同
数据库的安全控制子系统
常熟透明软件开发口碑推荐
orecle实时数据库
openwrt做服务器
河南自动套料软件开发商
移动软件开发大专工资待遇
工控解密软件开发
cgga数据库数据处理
华为云数据库
北京网络安全监察部门
关于软件开发的剧本
湖南新一代网络技术代理商
乡镇网络安全专题会议发言材料
时序数据库iotdb主要特性
12C创建插接式数据库卡死
职业健康检查网络安全预案
网络安全技术与实践 贾铁军