k8s(Kubernetes )架构简介,k8s(Kubernetes )各个组件之间的关系

2023-11-12

注意:本文旨在向初学者简要介绍k8s(Kubernetes )架构,让初学者有一个整体的印象,不至于被k8s复杂的结构吓晕,特别是没有容器,pod等基本概念的时候。

1. 什么是k8s?

可以看看Kubernetes的中文维基百科。

Kubernetes(常简称为K8s)是用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。该系统由Google设计并捐赠给Cloud Native Computing Foundation(今属Linux基金会)来使用。

也就是说k8s是一个可以管理容器化应用程序的系统。初学者可能往往不清楚容器,docker,Kubernetes等这些基础的概念和它们之间的关系,可以参考我写的一篇博客:
什么是k8s以及k8s中的几个基本概念的关系:容器,docker,pod,deployment - harry的文章

2. k8s(Kubernetes )架构简介

下面这张图是k8s的架构图(来源:k8s官方网站)
k8s架构图
可以看到一个Kubernetes集群整体上由两部分组成:Control Plane(控制平面)和Node (节点)

2.1 Control Plane(控制平面)

Control Plane在很多地方也被称为master 节点(主节点),而其他的node也被称为worker节点(工作节点)(这里面也有master -worker的构建思想)。

控制平面组件会为集群做出全局决策,比如资源的调度。 以及检测和响应集群事件,例如当不满足部署的 replicas 字段时, 要启动新的 pod)。

控制平面组件可以在集群中的任何节点上运行。 然而,为了简单起见,设置脚本通常会在同一个计算机上启动所有控制平面组件, 并且不会在此计算机上运行用户容器。

我觉得这也是为什么Control Plane会被叫做主节点的原因吧。
它主要包括以下几个部分:

  • kube-apiserver API
    服务器是 Kubernetes 控制平面的组件, 该组件负责公开了 Kubernetes API,负责处理接受请求的工作提供了资源操作的唯一入口,并提供认证、授权、访问控制、相关等机制。 API 服务器是Kubernetes 控制平面的前端。

  • etcd
    一致且高度可用的键值存储,用作 Kubernetes 的所有集群数据的后台数据库,主要是保存了整个集群的状态。etcd 采用分布式、容错设计,被视为集群的最终事实来源。

  • kube-scheduler kube-scheduler 是 负责监视新创建的、未指定运行节点(node)的 Pods, 并调度节点来让 Pod 在指定的机器上面运行

  • kube-controller-manager
    kube-controller-manager 是控制平面的组件, 负责运行控制器进程。负责维护集群的状态,比如故障检测、自动扩展、滚动更新等。 从逻辑上讲, 每个控制器都是一个单独的进程, 但是为了降低复杂性,它们都被编译到同一个可执行文件,并在同一个进程中运行。

  • cloud-controller-manager
    这个组件和云平台有关系,不需要太多关心。 一个 Kubernetes 控制平面组件, 嵌入了特定于云平台的控制逻辑。 云控制器管理器(Cloud Controller Manager)允许你将你的集群连接到云提供商的 API 之上, 并将与该云平台交互的组件同与你的集群交互的组件分离开来。 cloud-controller-manager 仅运行特定于云平台的控制器。 因此如果你在自己的环境中运行 Kubernetes,或者在本地计算机中运行学习环境, 所部署的集群不需要有云控制器管理器。

2.2 Node

这里的Node 就是worker node,负责处理真正的业务需求的节点。包括以下几个部分

  • kubelet
    这是一个与控制平面通信的微型应用。kubelet 可确保容器在容器集内运行。当控制平面需要在节点中执行某个操作时,kubelet 就会执行该操作。

  • kube-proxy
    kube-proxy 是集群中每个节点(node)所上运行的网络代理, 实现 Kubernetes 服务(Service) 概念的一部分。
    kube-proxy 维护节点上的一些网络规则, 这些网络规则会允许从集群内部或外部的网络会话与 Pod 进行网络通信。
    如果操作系统提供了可用的数据包过滤层,则 kube-proxy 会通过它来实现网络规则。 否则,kube-proxy 仅做流量转发。

  • 容器运行时(Container Runtime)
    **容器运行环境是负责运行容器的软件。**默认的容器运行时为 Docker;其他还有containerd、 CRI-O 以及 Kubernetes CRI (容器运行环境接口) 的其他任何实现

当然还可以自己选择一些插件(add-on),这里不再赘述。

下面这两张图可能可以更加清晰地看到k8s各个组件之间的关系
Master Node
Worker Node

3. k8s(Kubernetes )架构中体现的分层的思想

其实这里可能还不太能看出k8s中的分层思想,在worker node内部有pod ,deployment, service, container等更能看出其中的分层的思想。其中的分层实现可能要以一个更大的范畴来进行考量。
可以参考参考资料2,比如里**面的api 接口和ecosystem也就是生态系统之间就存在着分层关系,外部的应用(如监控)可以利用这些api接口。而管理层和应用层之间的关系就包括上述master node和worker node之间的关系。**这些就是很深入的知识了。

参考资料:

下面的资料质量都很高,如果想要深入了解的话,很推荐大家看看

  1. k8s官方网站
  2. https://www.kubernetes.org.cn/docs
  3. https://www.redhat.com/zh/topics/containers/kubernetes-architecture
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

k8s(Kubernetes )架构简介,k8s(Kubernetes )各个组件之间的关系 的相关文章

随机推荐

  • 【黑马程序员】MySQL 基础篇

    文章目录 前言 一 MySQL 概述 1 数据库相关概念 2 MySQL 数据库 1 版本 2 下载 3 安装 4 启动与停止 5 客户端连接 3 数据模型 1 关系型数据库 RDBMS 2 数据模型 二 SQL 1 SQL 通用语法 2
  • 企业应如何减少云配置错误?

    在当今技术驱动的环境中 大多数公司都会在云上拥有一些工作负载 与本地网络不同 这些云环境缺乏安全的外部边界和特定的关闭时间 云网络始终开启且始终可用 虽然方便 但这也意味着黑客可以随时访问它们 因此 这些网络中的任何漏洞 例如云配置错误 都
  • 项目回顾(一)-----原型的建立

    距离实习结束也有一段时间了 这段时间里我从前到后参加的过的一个项目 收获颇丰 故在博客中自我总结 积累经验 从了解到需求开始 就要开始着手思考功能 功能联系 数据存储等问题 根据客户的需求来进行原型的设计 这一步操作不单单是给客户一个样例
  • Java JDK动态代理

    Java JDK动态代理 一 代理是什么 二 示例 三 总结 一 代理是什么 代理是一种设计模式 被代理对象 真实对象 实现具体的服务方法 委托给代理来进行处理 代理类可以在被代理对象的方法上附加更多的处理 一般有静态代理和动态代理 区别在
  • Rancher部署Flink集群

    目录 一 添加flink conf yaml 二 配置flink jobmanager 三 配置flink taskmanager 一 添加flink conf yaml 资源 gt 配置映射 添加配置项
  • 解决npm install各种报错的6种方案 Error: Command failed: cmd.exe autoreconf -ivf以及gifsicle pre-build test fail

    解决npm install各种报错的6种方案 报错示例 方案零 刷新刷新 DNS 解析缓存 还有 可以尝试重启电脑 方案一 使用yarn 方案二 使用cnpm 方案三 修改配置host 方案四 这种解决其他报错比较多 修改npm源 方案五
  • Jmeter查看结果树之查看响应的13种详解方法

    Jmeter查看结果树查看响应有哪几种方法 可通过左侧面板底部的下拉框选择 01 Text 查看结果树中请求的默认格式为Text 显示取样器结果 请求 响应数据3个部分内容 取样器结果 默认Raw展示 可以切换为Parsed视图 表单展示更
  • 域名导向服务器 开源项目,让 Page 服务指向自己域名

    正常情况下如果只买了域名 但是没有买云主机 所以可以利用现有的 Page 服务并让域名跳转到该Page来实现 码云 自定义域名是收费的 但是服务文档 推荐 码云pro版自定义域名解析 Step 1 绑定你已备案的域名 Step 2 通过解析
  • hadoop,pySpark环境安装与运行实战《一》

    一 环境准备 环境最好再mac或者liunx环境搭建最为友好 不建议在windows上折腾 1 安装java jdk 下载java jdk 并在 bash profile配置 jdk mac路径查找方式 export JAVA HOME U
  • 后摩尔定律时代的芯片新选择!

    来源 gizmodo 摘要 很长一段时间以来 摩尔定律和它的最终结局一直就像房间里的大象 不容忽视 英特尔联合创始人戈登 摩尔在1965年的一篇论文中预测 芯片中的晶体管数量每年将翻一番 更多的晶体管意味着更快的速度 而这种稳定的增长推动了
  • jul177链接_「jul177小早川中文」无删减版高清天天影音第89集

    简介 一会儿 小早小早她走进来 小早小早看上去苍白而动摇 彼得 她说 去找丈夫而不是代替她在他对面 彼得 她颤抖的手放在他的手臂上 一世今天早上还没见过男孩 他们的床还没睡在 安静点 老兄 安静一下 坐下来吃点东西 沟通破坏了礼貌 但是当厄
  • 1G服务器网站,1核1g内存云服务器建网站

    1核1g内存云服务器建网站 内容精选 换一换 网站的访问与云服务器的网络配置 端口通信 防火墙配置 安全组配置等多个环节相关联 任意一个环节出现问题 都会导致网站无法访问 本节操作介绍网站无法访问时的排查思路 网站无法访问怎么办 如果打开网
  • 插优盘电脑计算机窗口闪,U盘插到电脑上,电脑怎么一闪一闪的?

    2009 05 08 我的U盘一直是好的 今天U盘插进电脑后 U盘灯闪几秒就熄灭了 不能读取 我怎么办 真是着急 请高手解答 非常感谢 U盘正规的是在插上后灯闪烁一下 在没有动作的情况下就不会亮 向盘里考资料 软件 音乐等任何文件时候 灯闪
  • dockfile概述,使用dockerfile构建Nginx,Tomcat镜像

    dockfile概述 使用dockerfile构建Nginx Tomcat镜像 一 镜像分层 1 1 docker 三要素 1 2 创建容器的几种方式 1 3 镜像所包含的部分 1 4 镜像的分层 二 dockerfile分层原理 2 1
  • http接口加密《一》:移动应用中,通过在客户端对访问的url进行加密处理来保护服务器上的数据...

    来源 http meiyitianabc blog 163 com blog static 10502212720131056273619 我认为 保护服务器端的数据 有这么几个关键点 不能对使用体验产生影响 这就排除掉了诸如每次接口调用都
  • 【STM32】keil使用sprintf时的告警处理

    使用如下语句 u8 DispBuf 50 sprintf DispBuf TEST 时 会出现如下告警 main c 86 warning 223 D function sprintf declared implicitly 这是由于没有包
  • 【Python百日进阶-WEB开发】Day172 - Django案例:04用户模型类

    文章目录 一 创建用户模块子应用 1 1 新建apps包 1 2 新建子应用 1 3 查看导包路径 1 4 注册子应用 二 追加导包路径 2 1 为什么要追加导包路径 2 2 查看当前的导包根路径 2 3 追加导包路径 三 展示用户注册页面
  • 4、H3C交换机AAA本地用户

    添加本地用户 并进入本地用户视图 switch local user user name class manage 设置本地用户的密码 switch local user password hash simple password 设置本地
  • 详解webpack4打包--新手入门(填坑)

    详解webpack4打包 新手入门 填坑 这是转载别人的文章 然后对一些重点做了标记 这位大哥语言幽默 也写的特别详细 我不是小白 是大白都看得懂 详解webpack4打包 新手入门 填坑 这几天在学习使用npm和webpack 各种曲折
  • k8s(Kubernetes )架构简介,k8s(Kubernetes )各个组件之间的关系

    注意 本文旨在向初学者简要介绍k8s Kubernetes 架构 让初学者有一个整体的印象 不至于被k8s复杂的结构吓晕 特别是没有容器 pod等基本概念的时候 1 什么是k8s 可以看看Kubernetes的中文维基百科 Kubernet