Kubernetes 整体架构图
https://www.toutiao.com/a6685509880746344968/
2019-05-13 06:18:00
Kubernetes 各组件介绍
Kube-Master「控制节点」
- Kube-Master 的工作流程图
- Kubecfg 将特定的请求发送给 Kubernetes Client(比如:创建 Pod 的请求)。
- Kubernetes Client 将请求发送给 API Server。
- API Server 会根据请求的类型选择用何种 REST API 对请求作出处理(比如:创建 Pod 时 Storage 类型是 Pods 时,其对应的就是 REST Storage API)。
- REST Storage API 会对请求作相应的处理并将处理的结果存入高可用键值存储系统 Etcd 中。
- 在 API Server 响应 Kubecfg 的请求后,Scheduler 会根据 Kubernetes Client 获取的集群中运行 Pod 及 Minion / Node 信息将未分发的 Pod 分发到可用的 Minion / Node 节点上。
API Server 「资源操作入口」
- API Server 提供了资源对象的唯一操作入口,其它所有组件都必须通过它提供的 API 来操作资源数据。只有 API Server 会与存储通信,其它模块都必须通过 API Server 访问集群状态。
- API Server 作为 Kubernetes 系统的入口,封装了核心对象的增删改查操作。API Server 以 RESTFul 接口方式提供给外部客户和内部组件调用,API Server 再对相关的资源数据(全量查询 + 变化监听)进行操作,以达到实时完成相关的业务功能。
- 以 API Server 为 Kubernetes 入口的设计主要有以下好处:1. 保证了集群状态访问的安全。2. API Server 隔离了集群状态访问和后端存储实现,这样 API Server 状态访问的方式不会因为后端存储技术 Etcd 的改变而改变,让后端存储方式选择更加灵活,方便了整个架构的扩展。
Controller Manager 「内部管理控制中心」
Controller Manager 用于实现 Kubernetes 集群故障检测和恢复的自动化工作。Controller Manager 主要负责执行以下各种控制器:
- Replication Controller
Replication Controller 的作用主要是定期关联 Replication Controller (RC) 和 Pod,以保证集群中一个 RC (一种资源对象) 所关联的 Pod 副本数始终保持为与预设值一致。
- Node Controller
Kubelet 在启动时会通过 API Server 注册自身的节点信息,并定时向 API Server 汇报状态信息。API Server 在接收到信息后将信息更新到 Etcd 中。
Node Controller 通过 API Server 实时获取 Node 的相关信息,实现管理和监控集群中的各个 Node 节点的相关控制功能。
- ResourceQuota Controller
资源配额管理控制器用于确保指定的资源对象在任何时候都不会超量占用系统上物理资源。
- Namespace Controller
用户通过 API Server 可以创建新的 Namespace 并保存在 Etcd 中,Namespace Controller 定时通过 API Server 读取这些 Namespace 信息来操作 Namespace。
比如:Namespace 被 API 标记为优雅删除,则将该 Namespace 状态设置为 Terminating 并保存到 Etcd 中。同时 Namespace Controller 删除该 Namespace 下的 ServiceAccount、RC、Pod 等资源对象。
- Service Account Controller
Service Account Controller (服务账号控制器),主要在命名空间内管理 ServiceAccount,以保证名为 default 的 ServiceAccount 在每个命名空间中存在。
- Token Controller
Token Controller(令牌控制器)作为 Controller Manager 的一部分,主要用作:监听 serviceAccount 的创建和删除动作以及监听 secret 的添加、删除动作。
- Service Controller
Service Controller 是属于 Kubernetes 集群与外部平台之间的一个接口控制器,Service Controller 主要用作监听 Service 的变化。
比如:创建的是一个 LoadBalancer 类型的 Service,Service Controller 则要确保外部的云平台上对该 Service 对应的 LoadBalancer 实例被创建、删除以及相应的路由转发表被更新。
- Endpoint Controller
Endpoints 表示了一个 Service 对应的所有 Pod 副本的访问地址,而 Endpoints Controller 是负责生成和维护所有 Endpoints 对象的控制器。
Endpoint Controller 负责监听 Service 和对应的 Pod 副本的变化。定期关联 Service 和 Pod (关联信息由 Endpoint 对象维护),以保证 Service 到 Pod 的映射总是最新的。
Scheduler「集群分发调度器」
- Scheduler 主要用于收集和分析当前 Kubernetes 集群中所有 Minion / Node 节点的资源 (包括内存、CPU 等) 负载情况,然后依据资源占用情况分发新建的 Pod 到 Kubernetes 集群中可用的节点。
- Scheduler 会实时监测 Kubernetes 集群中未分发和已分发的所有运行的 Pod。
- Scheduler 会实时监测 Minion / Node 节点信息,由于会频繁查找 Minion/Node 节点,Scheduler 同时会缓存一份最新的信息在本地。
- Scheduler 在分发 Pod 到指定的 Minion / Node 节点后,会把 Pod 相关的信息 Binding 写回 API Server,以方便其它组件使用。
Kube-Node「服务节点」
- Kubelet 结构图
Kubelet 「节点上的 Pod 管家」
- 负责 Node 节点上 Pod 的创建、修改、监控、删除等全生命周期的管理。
- 定时上报本地 Node 的状态信息给 API Server。
- Kubelet 是 Master API Server 和 Minion / Node 之间的桥梁,接收 Master API Server 分配给它的 Commands 和 Work。
- Kubelet 通过 Kube ApiServer 间接与 Etcd 集群交互来读取集群配置信息。
- Kubelet 在 Node 上做的主要工作具体如下:1. 设置容器的环境变量、给容器绑定 Volume、给容器绑定 Port、根据指定的 Pod 运行一个单一容器、给指定的 Pod 创建 Network 容器。2. 同步 Pod 的状态,从 cAdvisor 获取 Container Info、 Pod Info、 Root Info、 Machine info。3. 在容器中运行命令、杀死容器、删除 Pod 的所有容器。
Proxy「负载均衡、路由转发」
- Proxy 是为了解决外部网络能够访问集群中容器提供的应用服务而设计的,Proxy 运行在每个 Minion / Node 上。
- Proxy 提供 TCP / UDP 两种 Sockets 连接方式 。每创建一个 Service,Proxy 就会从 Etcd 获取 Services 和 Endpoints 的配置信息(也可以从 File 获取),然后根据其配置信息在 Minion / Node 上启动一个 Proxy 的进程并监听相应的服务端口。当外部请求发生时,Proxy 会根据 Load Balancer 将请求分发到后端正确的容器处理。
- Proxy 不但解决了同一宿主机相同服务端口冲突的问题,还提供了 Service 转发服务端口对外提供服务的能力。Proxy 后端使用随机、轮循等负载均衡算法进行调度。
Kubectl 「集群管理命令行工具集」
- Kubectl 是 Kubernetes 的 客户端的工具。 通过 Kubectl 命令对 API Server 进行操作,API Server 响应并返回对应的命令结果,从而达到对 Kubernetes 集群的管理。
原文地址:https://www.hi-linux.com/posts/48037.html
Kubernetes 整体架构图相关推荐
- Android多媒体整体架构图
Android多媒体整体架构图 MediaPlayer框架图 Camera框架图 SoundRecorder框架图 VideoCamera框架图 OpenCore与Skia ALSA Audio框架图 ...
- 嵌入式linux开发,unix系统整体架构图
嵌入式linux开发,unix系统整体架构图如下
- 企业信息化整体架构图
今天无意间发现一张企业信息化的图,放在这里以后参考. Collaboratice Commerce 转载于:https://www.cnblogs.com/Masterpiece/archiv ...
- Kubernetes Master High Availability 高级实践
才云科技云开源高级工程师唐继元受邀DBAplus社群,在线分享<Kubernetes Master High Availability 高级实践>,介绍如何构建Kubernetes Mas ...
- kubernetes基本概念与架构整理记录
文章目录 前言 一.kubernetes概述 1.1.kubernetes基本介绍 1.1.1.kubernetes是什么 1.1.2.kubernetes部署方式 1.2.kubernetes功 ...
- Kubernetes笔记(一) Kubernetes 集群架构
1. Kubernetes 集群架构 Kuberetes 本身是由一系列组件组成的容器编排系统,每个组件各司其职从而实现容器的调度.部署以及自动伸缩等功能. 下面是包含各个组件的 Kubernetes ...
- Kubernetes Master High Availability 高级实践 1
才云科技云开源高级工程师唐继元受邀DBAplus社群,在线分享<Kubernetes Master High Availability 高级实践>,介绍如何构建Kubernetes Mas ...
- 微服务架构系列一:关键技术与原理研究
导语:人不为己,天诛地灭这个成语中的"为"念作wéi,阳平二声,是"修养,修为"的意思.成语的意思是:如果人不修身,那么就会为天地所不容.本意并不是经常被很多人 ...
- 宅家学习,如何进行Kubernetes Ingress控制器的技术选型?
导语:在Kubernetes的实践.部署中,为了解决 Pod 迁移.Node Pod 端口.域名动态分配等问题,需要开发人员选择合适的 Ingress 解决方案.面对市场上众多Ingress产品,开发 ...
最新文章
- 浅析MySQL InnoDB的隔离级别
- python电脑配置-入门学python需要什么配置的电脑?
- Win10操作系统备份与恢复篇·Windows10操作系统如何使用微PE实现备份与恢复
- 正确理解文件与目录的可读、可写、可执行权限
- vscode 使用code runner配置c++11
- 新手学3D游戏建模,台式电脑要什么配置?笔记本又有什么推荐?
- 赴一场心仪已久的戴尔中国“家宴”
- 01背包问题---动态规划
- TTSR:用Transformer来实现端到端的超分辨率任务 | CVPR2020
- 人工智能会成为下一场的科技革命吗?
- 宝宝的肚子看起来是鼓鼓胀胀
- 20210518第一天
- zz业界大家谈之苹果必须死和世界上最奇葩的公司谷歌
- excel的使用技巧大全
- 【21】processing-输出(中文)
- BTRFS - Performance
- CSS3 object-position/object-fit属性(转载)
- 查看Oracle的表中有哪些索引(用user_indexes和user_ind_columns)
- android游戏手柄问题
- 佳博热敏打印机 GP-L80180I 使用
热门文章
- Java Remote Debug(远程调试)
- ECLIPSE 插件使用LINKS目录的用法
- MySQL连接问题: MySQLNonTransientConnectionException:Communications link failure during rollback()
- 2021 倒计时,编程日历倒计时,但伟大与经典历久弥新
- 计算机应届生必读的 AI 入门经典书单
- Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network
- 深度学习4:使用MNIST数据集(tensorflow)
- 让人造太阳更近!DeepMind强化学习算法控制核聚变登上Nature
- 从39个kaggle竞赛中总结出来的图像分割的Tips和Tricks(附资源)
- 数据蒋堂 | 内置的数据无法实现高性能