Kubernetes关键组件与结构组成介绍


Posted in Servers onMarch 31, 2022

架构组成

我们可以看一下这两张图,所表示的都是关于 Kubernetes 集群的架构。

一个 kubernetes 集群是由一组被称为节点(Node)的机器或虚拟机组成,集群由 master、worker 节点组成,每个机器至少具有一个 worker 节点。

Kubernetes关键组件与结构组成介绍

Kubernetes关键组件与结构组成介绍

Master

在前面两个图中,可以看到 Master 是由一组称为控制平面组件组成的,我们可以打开 /etc/kubernetes/manifests/ 目录,里面是 k8s 默认的控制平面组件。

.
├── etcd.yaml
├── kube-apiserver.yaml
├── kube-controller-manager.yaml
└── kube-scheduler.yaml

对于集群来说, etcd、apiserver、schedluer 是必不可少的,接下来了解一下这几个组件的作业和相关资料。

kube-apiserver

kube-apiserver 是 k8s 主要进程之一,apiserver 组件公开了 Kubernetes API ,apiserver 是 Kubernetes 控制面的前端。kubectl 具有控制集群的很强大的功能,正是 apiserver 提供了接口服务,kubectl 解析用户输入的指令后,向 apiserver 发起 HTTP 请求,再将结果反馈给用户。

其暴露的 endiont 端口是 6443,我们通过 kubeadm join ip:6443 ... 将节点加入集群,正是通过 apiserver 处理的。

etcd

etcd 是兼具一致性和高可用性的键值数据库,作为保存 Kubernetes 所有集群数据的后台数据库。kube-apiserver 的所有操作结果都会存储到 etcd 数据库中,etcd 主要存储 k8s 的状态、网络配置以及其它持久化数据,etcd 是使用 B+ 树实现的。

kube-scheduler

scheduler 负责监视新创建的 pod,并把 pod 分配到节点上。

kube-controller-manager

kube-controller-manager 中包含了多个控制器,它们都被编译到一个二进制文件中,但是启动后会产生不同的进程。这些控制器有:

  • 节点控制器(Node Controller)

    负责在节点出现故障时进行通知和响应

  • 任务控制器(Job controller)

    监测代表一次性任务的 Job 对象,然后创建 Pods 来运行这些任务直至完成

  • 端点控制器(Endpoints Controller)

    填充端点(Endpoints)对象(即加入 Service 与 Pod)

  • 服务帐户和令牌控制器(Service Account & Token Controllers)

    为新的命名空间创建默认帐户和 API 访问令牌

Worker

工作节点是真正干活的节点,每个工作节点上都运行着 kubelet、kube-proxy 两个 k8s 组件以及容器引擎。kube-apiserver 这些称为 控制平面组件,而 kubelet、kube-proxy 则称为 节点组件。

kubelet 与所有安装在节点上的底层容器引擎进行交互,它确保所需的容器都运行在 pod 中,如果我们直接使用 docker run 创建容器,kubelet 不会管理非 kubernetes 创建的容器。

kube-proxy 负责管理容器的网络连接,是集群中每个节点上运行的网络代理,也是我们之前学习到的 Service 服务的一部分。

到此这篇关于Kubernetes关键组件与结构组成的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Servers 相关文章推荐
Nginx解决前端访问资源跨域问题的方法详解
Mar 31 Servers
小程序后台PHP版本部署运行 LNMP+WNMP
Apr 01 Servers
Nginx已编译的nginx-添加新模块
Apr 01 Servers
解决使用了nginx获取IP地址都是127.0.0.1 的问题
Sep 25 Servers
使用Nginx搭载rtmp直播服务器的方法
Oct 16 Servers
nginx内存池源码解析
Nov 20 Servers
Nginx配置https的实现
Nov 27 Servers
Vertica集成Apache Hudi重磅使用指南
Mar 31 Servers
Apache Hudi 加速传统的批处理模式
Apr 24 Servers
阿里云服务器Ubuntu 20.04上安装Odoo 15
May 20 Servers
Python安装及建立虚拟环境的完整步骤
Jun 25 Servers
keepalived + nginx 实现高可用方案
Dec 24 Servers
配置Kubernetes外网访问集群
CKAD认证中部署k8s并配置Calico插件
Mar 31 #Servers
使用kubeadm命令行工具创建kubernetes集群
Mar 31 #Servers
Minikube搭建Kubernetes集群
Apache Pulsar结合Hudi构建Lakehouse方案分析
Apache Hudi的多版本清理服务彻底讲解
Z-Order加速Hudi大规模数据集方案分析
Mar 31 #Servers
You might like
php将远程图片保存到本地服务器的实现代码
2015/08/03 PHP
PHP自定义函数实现数组比较功能示例
2017/10/19 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
ajax 文件上传应用简单实现
2009/03/03 Javascript
鼠标经过的文本框textbox变色
2009/05/21 Javascript
分享Javascript中最常用的55个经典小技巧
2013/11/29 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
JS实现鼠标移上去显示图片或微信二维码
2016/12/14 Javascript
Bootstrap中datetimepicker使用小结
2016/12/28 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
jQuery中的for循环var与let的区别
2018/04/21 jQuery
vue element 生成无线级左侧菜单的实现代码
2019/08/21 Javascript
JavaScript命令模式原理与用法实例详解
2020/03/10 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第二场 2月28日
2021/03/11 DOTA
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
2013/12/04 Python
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
2014/01/19 Python
在Python的Django框架中包装视图函数
2015/07/20 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
2016/06/16 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
python中pika模块问题的深入探究
2018/10/13 Python
python读取各种文件数据方法解析
2018/12/29 Python
Python中@property的理解和使用示例
2019/06/11 Python
pyqt5中QThread在使用时出现重复emit的实例
2019/06/21 Python
python获取当前文件路径以及父文件路径的方法
2019/07/10 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
2020/04/08 Python
降低python版本的操作方法
2020/09/11 Python
施工安全责任书范本
2014/07/24 职场文书
村委会贫困证明范文
2014/09/21 职场文书
医生党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
春季运动会开幕词
2015/01/28 职场文书
2015年学校教科室工作总结
2015/07/20 职场文书
企业团队精神心得体会
2016/01/19 职场文书
MySQL 8.0 Online DDL快速加列的相关总结
2021/06/02 MySQL
MySQL Shell import_table数据导入的实现
2021/08/07 MySQL
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android
Django框架中视图的用法
2022/06/10 Python