前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >图解K8s源码 - 序章 - K8s组件架构

图解K8s源码 - 序章 - K8s组件架构

作者头像
才浅Coding攻略
发布于 2022-12-12 10:16:49
发布于 2022-12-12 10:16:49
7840
举报
文章被收录于专栏:才浅coding攻略才浅coding攻略

在之前的文章中我们介绍了从传统部署方式到虚拟化再到容器部署方式的演变,随着容器数量规模的不断增大,我们急需一个大规模容器编排系统。Kubernetes是一个全新的基于容器技术的分布式架构解决方案,并且是一个一站式的完备的可弹性运行的分布式系统开发和支撑平台。

Docker容器:“我竟可以是个饭盒?!”

Kubernetes微服务常见概念及应用

Kubernetes具有以下特性:

  • 服务发现和负载均衡 Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器,如果进入容器的流量很大, Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。
  • 存储编排 Kubernetes 允许自动挂载你选择的存储系统,例如本地存储、公共云提供商等。
  • 自动部署和回滚 你可以使用 Kubernetes 描述已部署容器的所需状态,它可以以受控的速率将实际状态更改为期望状态。例如,你可以自动化 Kubernetes 来为你的部署创建新容器, 删除现有容器并将它们的所有资源用于新容器。
  • 自动完成装箱计算 Kubernetes 允许你指定每个容器所需 CPU 和内存(RAM)。当容器指定了资源请求时,Kubernetes 可以做出更好的决策来管理容器的资源。
  • 自我修复 Kubernetes 重新启动失败的容器、替换容器、杀死不响应用户定义的运行状况检查的容器,并且在准备好服务之前不将其通告给客户端。
  • 密钥与配置管理 Kubernetes 允许你存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。你可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥。

Kubernetes属于主从设备模型(Master-Slave架构),由Master和Node节点组成。它的工作方式为 Kubernetes Cluster = N Master Node + N Worker Node:N主节点+N工作节点;N>=1。

Kubernetes架构借鉴了 Borg 的设计理念。Kubernetes 的整体架构跟 Borg 非常像,如下图所示,我们把服务分为运行在工作节点上的服务和组成集群级别控制板的服务:

Kubernetes组件架构如下图,其中包含Master节点的控制平面组件(Control Plane Components)和worker节点的Node 组件:

Kubernetes节点有运行应用容器必备的服务,而这些都是受Master的控制。控制平面的组件对集群做出全局决策(比如调度),以及检测和响应集群事件(例如,当不满足部署的 replicas 字段时,启动新的 pod)。

  • kube-Apiserver: 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制。
  • kube-Controller-Manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等。 从逻辑上讲, 每个控制器都是一个单独的进程, 但是为了降低复杂性,它们都被编译到同一个可执行文件,并在同一个进程中运行。这些控制器包括:
    • 节点控制器(Node Controller):负责在节点出现故障时进行通知和响应
    • 任务控制器(Job Controller):监测代表一次性任务的 Job 对象,然后创建 Pods 来运行这些任务直至完成
    • 端点分片控制器(EndpointSlice controller):填充端点分片(EndpointSlice)对象(以提供 Service 和 Pod 之间的链接)
    • 服务账号控制器(ServiceAccount controller):为新的命名空间创建默认的服务账号(ServiceAccount)。(1.25版本前为服务账户和令牌控制器(Service Account & Token Controllers):为新的命名空间创建默认账户和 API 访问令牌)
  • Etcd:键值数据库,负责存储整个集群的配置信息和各种资源的状态信息,因为有watch(观察者)的支持,各部件协调中的改变可以很快被察觉。详细内容见往期文章读猿码系列——2. 搞懂Etcd核心API
  • kube-Scheduler:负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上。
  • cloud-controller-manager:云控制器管理器是指嵌入特定云的控制逻辑的控制平面组件。

Node 节点下包含组件:

  • kubelet:负责维护容器的生命周期,同时也负责与Master节点中的api-server组件沟通,并按照api-server的指示,直接管理 Worker 节点。
  • kube-proxy :负责为Service提供cluster内部的服务发现和负载均衡。
  • Container Runtime:负责镜像管理以及Pod和容器的真正运行。

除了核心组件,还有一些常用的Add-ons:

  • kube-dns负责为整个集群提供DNS服务
  • Ingress Controller为服务提供外网入口
  • Heapster提供资源监控
  • Dashboard提供GUI
  • Federation提供跨可用区的集群
  • Fluentd-elasticsearch提供集群日志采集、存储与查询

Pod 是 kubernetes 中可以创建和部署的最小也是最简的单位。代表着集群中运行的进程。在Kubenetes中,所有的容器均在Pod中运行,一个Pod可以承载一个或者多个相关的容器。同一个 Pod 中的容器会自动地分配到同一个 node 上。同一个 Pod 中的容器共享资源、网络环境和依赖,它们总是被同时调度。逻辑上的一组 Pod,一种可以访问它们的策略 —— 通常称为微服务。Service 所针对的 Pod 集合通常是通过选择算符来确定的。

在Kubernetes中,Service是分布式集群架构的核心。一个Service对象拥有如下关键特征:

  • 拥有唯一指定的名称(比如mysql-server)。
  • 拥有一个虚拟IP地址(ClusterIP地址)和端口号。
  • 能够提供某种远程服务能力。
  • 能够将客户端对服务的访问请求转发到一组容器应用上。

概念上来讲,K8S 集群的服务,其实就是负载均衡或反向代理。


对于上面的组件架构图,我在B站刷到了一个非常有意思且易于理解的比喻,我先上图:

Master节点理解为一个集团总公司,其中Controller manager是公司的高层决策者,他将决策下发到API server秘书部,API server秘书部将决策备份到etcd资料库中保存起来,并通知给Scheduler调度者由他调度项目由哪个或者哪几个分厂去做,Scheduler调度者将结果反馈到API server秘书部,秘书部将调度结果存放到etcd资料库,并按调度结果来通知到各个分厂,然后通知Cloud controller manager外联部也就是外部云厂商。每个分厂中的kubelet厂长负责控制当前节点该搞哪些项目和不搞哪些项目,由API server秘书部通知kubelet厂长调度结果。kube-proxy是每个分厂的门卫大爷,他们知道每个分厂都在搞哪个项目,当有领导视察某个项目在哪个分厂时,由kube-proxy门卫大爷告知地址,并且大爷们之间信息是同步的。

API server秘书部是去总部访问的唯一入口;

kube-proxy门卫大爷是集群中控制网络的唯一入口;

我们的kubectl也是通过api-server才能传达给controller-manager。

参考:

https://v1-24.docs.kubernetes.io/zh-cn/docs/concepts/overview/components/

https://www.kubernetes.org.cn/

https://www.yuque.com/leifengyang/oncloud/ghnb83

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 才浅coding攻略 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深度时间序列预测和基础模型的研究进展
本文综述了深度学习在时间序列预测中的应用,特别是在流行病预测领域。尽管深度学习在时间序列预测中表现出显著优势,但仍面临挑战,如时间序列不够长、无法利用积累的科学知识以及模型的解释性。
算法进阶
2024/07/10
3560
深度时间序列预测和基础模型的研究进展
​万字综述 | 图神经网络在时间序列中的应用:预测、分类、填补和异常检测
时间序列是记录动态系统测量值的主要数据类型,由物理传感器和在线过程(虚拟传感器)大量生成。因此,时间序列分析对于揭示可用数据中隐含的信息财富至关重要。随着图神经网络(GNNs)的最新进展,基于GNN的时间序列分析方法大幅增加。这些方法可以明确地建模时序和变量间的关系,而传统的和其他基于深度神经网络的方法则难以做到。在这项调查中,我们对图神经网络在时间序列分析中的应用进行了全面回顾(GNN4TS),涵盖了四个基本维度:预测、分类、异常检测和填补。我们的目标是指导设计师和从业者了解、构建应用程序,并推进GNN4TS的研究。首先,我们提供了一个全面的面向任务的GNN4TS分类法。然后,我们介绍和讨论代表性研究成果,并介绍GNN4TS的主流应用。最后,我们全面讨论了潜在的未来研究方向。这项调查首次汇集了大量关于基于GNN的时间序列研究的知识,突出了图神经网络在时间序列分析中的基础、实际应用和机遇。
Houye
2024/04/11
6.7K0
​万字综述 | 图神经网络在时间序列中的应用:预测、分类、填补和异常检测
时间序列表示学习的综述
本文综述了时间序列数据中的通用表示学习方法,提出了一种新颖的分类方法,并讨论了其对提高学习表示质量的影响。文章全面回顾了各种神经网络架构、学习目标和数据相关技术,并总结了常用的实验设置和数据集。
算法进阶
2024/07/22
5810
时间序列表示学习的综述
深度学习基础之前馈神经网络
深度学习中的前馈神经网络(Feedforward Neural Network, FNN)是一种基本且广泛使用的神经网络模型。其核心思想是将输入数据传递给网络的输入层,然后通过一系列全连接的隐藏层进行处理,最终在输出层得到结果。
用户11315985
2024/10/16
2670
深度学习基础之前馈神经网络
深度学习时间序列异常检测方法
本文全面概述了深度学习用于时间序列异常检测的最新架构,提供了基于策略和模型的方法,并讨论了各种技术的优点和局限性。此外,还举例说明了近年来深度学习在时间序列异常检测中各领域的应用。
算法进阶
2024/07/11
1.2K0
深度学习时间序列异常检测方法
基于ARIMA、SVM、随机森林销售的时间序列预测|附代码数据
如今DT(数据技术)时代,数据变得越来越重要,其核心应用“预测”也成为互联网行业以及产业变革的重要力量。
拓端
2023/11/09
7000
时间序列图神经网络最新综述(GNN4TS)
时间序列是用于记录动态系统测量结果的主要数据类型,并由物理传感器和在线过程(虚拟传感器)大量生成。因此,时间序列分析对于发掘可用数据中隐含的信息丰富性至关重要。随着图神经网络(GNNs)的最近进步,基于GNN的时间序列分析方法的研究有所增加。这些方法可以明确地模拟时间和变量之间的关系,这是传统的和其他基于深度神经网络的方法难以做到的。在这次综述中,我们对图神经网络进行了全面的时间序列分析(GNN4TS),包括四个基本维度:预测、分类、异常检测和插补。我们的目标是指导设计师和实践者理解,构建应用,并推进GNN4TS的研究。首先,我们提供了一个全面的任务导向的GNN4TS分类。然后,我们介绍并讨论代表性的研究工作,最后讨论GNN4TS的主流应用。关于潜在的未来研究方向的全面讨论完整了这次综述。这次研查是首次汇集了大量关于基于GNN的时间序列研究的知识,突出了图神经网络用于时间序列分析的基础、实际应用和机会。推荐阅读:深度时间序列的综述
算法进阶
2023/08/28
6680
时间序列图神经网络最新综述(GNN4TS)
使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测|附代码数据
时间序列预测问题是预测建模问题中的一种困难类型(点击文末“阅读原文”获取完整代码数据)。
拓端
2022/10/31
2.4K0
全面!深度学习时间序列分类的综述!
时间序列分析中的时间序列分类(TSC)是关键任务之一,具有广泛的应用,如人体活动识别和系统监测等。近年来,深度学习在TSC领域逐渐受到关注,具有自动从原始时间序列数据中学习并抽取有意义特征的能力。
算法进阶
2024/05/02
3.3K0
全面!深度学习时间序列分类的综述!
算法金 | 时间序列预测真的需要深度学习模型吗?是的,我需要。不,你不需要?
时间序列预测,这玩意儿在数据分析界可是个香饽饽,尤其在电力、交通、空气质量这些领域里,预测得准,资源分配更合理,还能让相关部门提前做好准备。但深度学习这小子横空出世,开始抢传统统计学方法的风头。那么问题来了,时间序列预测非得用深度学习吗?咱们今天就来掰扯掰扯。
算法金
2024/07/08
1100
算法金 | 时间序列预测真的需要深度学习模型吗?是的,我需要。不,你不需要?
Python电力负荷:ARIMA、LSTM神经网络时间序列预测分析
电力系统源源不断向各用户提供持续稳定的电能,本文通过对数据的提取,帮助客户分别对不同客户端日,月,年的用电负荷情况进行分析,并通过模型对单户负荷情况进行预测。
拓端
2023/04/05
1.2K0
深度学习的时间序列模型评价
技术总言: 这次主要说最近发展的无监督特征学习和深入学习,其对于时间序列模型问题的评价。这些技术已经展现了希望对于建模静态数据,如计算机视觉,把它们应用到时间序列数据正在获得越来越多的关注。这次主要概述了时间序列数据存在的特殊挑战,并提供了工作的评价,其含有把时间序列应用到非监督特征学习算法或者是有选择的促成特征学习算法的变动去考虑目前时间序列数据的挑战。 ---- 当人们大脑在学习任务的时候,如语言、视觉和运动,时间是一种自然元素总是存在的。大多数真实世界的数据有一些时间成份,无论是自然过程的测量值(如
计算机视觉研究院
2018/04/17
2.3K0
深度学习的时间序列模型评价
深度学习与统计学中的时间序列预测
近年来,深度学习在NLP领域取得了显著进展。由于时间序列本质上也是呈现出序列性,如果将预训练的转换器(transformers)模型应用在时间序列预测上,结果将会如何呢?
LeonAlgo
2025/02/26
1090
深度学习与统计学中的时间序列预测
数学建模--时间序列分析方法
在数学建模中,时间序列分析是一种重要的方法,用于研究和预测随时间变化的数据序列。这些数据可以是股票价格、气象观测、销售数据、人口统计等。时间序列分析的基本步骤包括处理缺失值、生成时间变量并绘制时间序列图,观察是否存在季节性波动,并根据图形大致判断数据的趋势。
用户11315985
2024/10/16
3400
数学建模--时间序列分析方法
时序预测的深度学习算法介绍
深度学习方法是一种利用神经网络模型进行高级模式识别和自动特征提取的机器学习方法,近年来在时序预测领域取得了很好的成果。常用的深度学习模型包括循环神经网络(RNN)、长短时记忆网络(LSTM)、门控循环单元(GRU)、卷积神经网络(CNN)、注意力机制(Attention)和混合模型(Mix )等,与机器学习需要经过复杂的特征工程相比,这些模型通常只需要经数据预处理、网络结构设计和超参数调整等,即可端到端输出时序预测结果。深度学习算法能够自动学习时间序列数据中的模式和趋势,神经网络涉及隐藏层数、神经元数、学习率和激活函数等重要参数,对于复杂的非线性模式,深度学习模型有很好的表达能力。在应用深度学习方法进行时序预测时,需要考虑数据的平稳性和周期性,选择合适的模型和参数,进行训练和测试,并进行模型的调优和验证。来源:轮回路上打碟的小年轻(侵删)
数据STUDIO
2023/09/04
1.8K0
时序预测的深度学习算法介绍
15种时间序列预测方法总结(包含多种方法代码实现)
在这篇文章中,我们将深入探讨时间序列预测的基本概念和方法。我们将首先介绍单元预测和多元预测的概念,然后详细介绍各种深度学习和传统机器学习方法如何应用于时间序列预测,包括循环神经网络(RNN)、一维卷积神经网络(1D-CNN)、Transformer、自回归模型(AR)、状态空间模型、支持向量机(SVM)和随机森林(RF)等。我们还会讨论这些方法在单元预测和多元预测中的适用性。
机器学习AI算法工程
2024/04/30
9.4K0
15种时间序列预测方法总结(包含多种方法代码实现)
基于ARIMA、SVM、随机森林销售的时间序列预测
扎对,将产品粗略分为:基本款和时装。对于基本款,每年都没什么大变化,国际流行的影响也不大,那么可以进行长计划生产。对于时装,决定潮流走向的决策权不在某个区域,一个地方的买手们也没有成长到可以准确预判国际流行趋势,所以需要结合不同区域的各种因素,进行预测。对应的,在新货构成中,销量预测策略为:基本款计划生产,时尚款机动调整。
拓端
2020/09/26
2.2K0
利用显著-偏置卷积神经网络处理混频时间序列
显著-偏置卷积神经网络简介 金融时间序列通常通常包含多个维度,不同维度数据的采样频率也不一致。例如螺纹钢研究员通常关心螺纹钢的因素有日频更新的现货螺纹钢价格,周频更新的螺纹钢库存,高炉开工率和线螺采购量,而月频更新的则有商品房销售面积等。如果其中某些可观测因子发生了变化,投资者对未来螺纹钢期货涨跌的预期也应发生变化,但是如何处理这些不同频率的数据是量化模型的一大难题。一种比较简单直接的方法就是降低数据的采样频率,例如把日频数据统一为周频(甚至更低如月频),再基于周频数据进行预测。但这种方法的缺点也很明显,期
企鹅号小编
2018/01/29
1.5K0
使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测
用于处理序列依赖性的强大神经网络称为 递归神经网络。长短期记忆网络或LSTM网络是深度学习中使用的一种递归神经网络,可以成功地训练非常大的体系结构。
拓端
2021/01/28
3.6K0
使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测
深度学习基础--神经网络概述
神经网络的基本组成部分包括神经元模型、网络结构、前向传播、反向传播和梯度下降等概念。神经元是最基本的成分,一个神经元有多个输入和一个输出。神经网络可以分为三种主要类型:人工神经网络(ANN)、卷积神经网络(CNN)和循环神经网络(RNN)。 在深度学习中,神经网络通过构建大量的处理单元和层级结构来实现自动特征提取,这使得深度学习能够对复杂的模式和概念进行学习和表达。深度学习是机器学习的一个重要分支,其核心在于利用神经网络的层级结构和参数优化来解决复杂的问题。 神经网络的训练或学习主要目的是通过学习算法得到解决指定问题所需的参数,这些参数包括各层神经元之间的连接权重以及偏置等。深度学习与神经网络之间的关系是,深度学习依赖于神经网络的层级结构和参数优化,而神经网络是深度学习的基础。 综上所述,神经网络是深度学习的核心,通过构建复杂的层级结构和优化参数,能够处理各种复杂的任务。深度学习通过模拟人脑的机制来解释数据,例如图像、声音和文本,从而在人工智能领域取得了突破性的进展。
用户11315985
2024/10/16
2780
深度学习基础--神经网络概述
推荐阅读
相关推荐
深度时间序列预测和基础模型的研究进展
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档