当前位置: 首页 > article >正文

Kubernetes:基础的架构

kubernetes的一个简单机构图形

 k8s 主要分为两个大结构 :

1 控制面:master 是集群的大脑和心脏

2 数据面:worker 主要在master 的指挥下进行工作,也称之为node

kubectl 是k8s的管理工具

我们可以使用kubectl get node来查看节点的状态  因为 Master 和 Node 的划分不是绝对的。当集群的规模较小,工作负载较少的时候,Master 也可以承担 Node 的工作

使用kubectl get pod 来查看pod的状态

master节点内部的结构

Kubernetes 的节点内部也具有复杂的结构,是由很多的模块构成的,这些模块又可以分成组件(Component)和插件(Addon)两类。

组件是k8s的核心功能的特性,而插件是一些附件的功能,是一些锦上添花的作用。

Master的组件构成有哪些?

apiserver 是 Master 节点,是整个 Kubernetes 系统的唯一入口,它对外公开了一系列的 RESTful API,并且加上了验证、授权等功能,所有的组件都必须通过apiserver来沟通。

etcd 是一个高可用的分布式 Key-Value 数据库,用来持久化存储系统里的各种资源对象和状态,主要做K8S的配置。 任何其他组件想要读写ETCD 必须通过apiserver来实现

scheduler 负责容器的编排工作,检查节点的资源状态,把pod调度到合适的节点来运行,因为节点状态和 Pod 信息都存储在 etcd 里,所以 scheduler 必须通过 apiserver 才能获得。

controller-manager 负责维护容器和节点等资源的状态,实现故障检测、服务迁移、应用伸缩等功能。必须通过apiserver 获取etcd中的节点和资源状态来进行工作。

通过 kubectl get pod -n kube-system 我们可以查看组件的状态

node节点内部都有哪些组件?

kubelet 是 Node 节点的代理,负责管理 Node 相关的绝大部分操作,Node 上只有它能够与 apiserver 通信,实现状态报告、命令下发、启停容器等功能,负责Node节点的运行维护。

kube-proxy 的作用有点特别,它是 Node 的网络代理,负责管理容器的网络通信, Pod 转发 TCP/UDP 数据包。

container-runtime  是容器和镜像的实际使用者 ,负责创建容器,管理 Pod 的生命周期。

最后我们总结下整体的调度流程:

kubelet  向 master的apiserver 上报节点的状态,并通过apiserver存入到etcd中

kube-proxy 负责tcp和udp的数据包 让容器可以对外提供服务

scheduler 通过apiserver 从etcd中获取到当前节点的状态,从而调度podapiserver 下发命令给某个 Node 的 kubelet,kubelet 调用 container-runtime 启动容器。

controller-manager  apiserver 获得节点状态,监控异常情况。


http://www.kler.cn/a/512418.html

相关文章:

  • Kotlin语言的数据结构
  • 零信任安全理念
  • vue3+ts+uniapp 微信小程序(第一篇)—— 微信小程序定位授权,位置信息权限授权
  • gitlab使用多数据库
  • leetcode347.前k个高频元素
  • 我的创作纪念日——我与CSDN一起走过的365天
  • 《Opencv》图像的透视变换--处理发票
  • 【转】厚植根基,同启新程!一文回顾 2024 OpenHarmony 社区年度工作会议精彩瞬间
  • C语言文件
  • 事件驱动量化回测 UML 序列图
  • 深入Spring Boot:自定义Starter开发与实践
  • uniapp button按钮去掉默认样式
  • C# 给定欧氏平面中的一组线可以形成的三角形的数量
  • 【新人系列】Python 入门(二十八):常用标准库 - 上
  • 算法题目总结-二叉树
  • SuperMap iClient3D for WebGL选中抬升特效
  • oracle之行转列
  • 亲测有效!如何快速实现 PostgreSQL 数据迁移到 时序数据库TDengine
  • vue3+three.js加载glb模型
  • 基于SpringBoot + Mybatis Plus + SaToken + Thymeleaf + Layui的后台管理系统
  • Python基于Django的社区爱心养老管理系统设计与实现【附源码】
  • Cyber Security 101-Security Solutions-Firewall Fundamentals(防火墙基础)
  • Java Web开发高级——Spring Boot与Docker容器化部署
  • 电子电气架构 --- 车载通信诊断
  • 【开源免费】基于SpringBoot+Vue.JS密接者跟踪系统(JAVA毕业设计)
  • 大语言模型增强推荐系统:分类、趋势、应用与未来