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常用命令放入shell脚本详解
Mar 31 Servers
Nginx的rewrite模块详解
Mar 31 Servers
Apache Calcite 实现方言转换的代码
Apr 24 Servers
nginx+lua单机上万并发的实现
May 31 Servers
Nginx反向代理学习实例教程
Oct 24 Servers
Kubernetes控制节点的部署
Apr 01 Servers
阿里云k8s服务升级时502错误 springboot项目应用
Apr 09 Servers
CentOS7安装GlusterFS集群以及相关配置
Apr 12 Servers
Windows Server 2019 安装DHCP服务及相关配置
Apr 28 Servers
Windows Server 修改远程桌面端口的实现
Jun 25 Servers
windows系统安装配置nginx环境
Jun 28 Servers
Windows7下FTP搭建图文教程
Aug 05 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 file_exists 检查文件或目录是否存在的函数
2010/05/10 PHP
php生成扇形比例图实例
2013/11/06 PHP
ThinkPHP实现批量删除数据的代码实例
2014/07/02 PHP
PHP读取文件内容的五种方式
2015/12/28 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
php项目中类的自动加载实例讲解
2019/09/12 PHP
Laravel 类和接口注入相关的代码
2019/10/15 PHP
常用简易JavaScript函数
2009/04/09 Javascript
JavaScript 计算图片加载数量的代码
2011/01/01 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
js 动态加载事件的几种方法总结
2013/12/25 Javascript
SeaJS入门教程系列之使用SeaJS(二)
2014/03/03 Javascript
写给小白的JavaScript引擎指南
2015/12/04 Javascript
JavaScript EventEmitter 背后的秘密 完整版
2018/03/29 Javascript
vue2 拖动排序 vuedraggable组件的实现
2019/08/08 Javascript
js实现的在本地预览图片功能示例
2019/11/09 Javascript
详解微信小程序中var、let、const用法与区别
2020/01/11 Javascript
javascrpt密码强度校验函数详解
2020/03/18 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
Webpack的Loader和Plugin的区别
2020/11/09 Javascript
JavaScript十大取整方法实例教程
2020/12/03 Javascript
[26:24]完美副总裁、DOTA2负责人蔡玮专访:电竞如人生
2014/09/11 DOTA
利用numpy+matplotlib绘图的基本操作教程
2017/05/03 Python
python中利用await关键字如何等待Future对象完成详解
2017/09/07 Python
解决Pycharm运行时找不到文件的问题
2018/10/29 Python
Python3.5以上版本lxml导入etree报错的解决方案
2019/06/26 Python
简单了解python的break、continue、pass
2019/07/08 Python
python3 selenium自动化测试 强大的CSS定位方法
2019/08/23 Python
详解用Python爬虫获取百度企业信用中企业基本信息
2020/07/02 Python
如何以Winsows Service方式运行JupyterLab
2020/08/30 Python
车队司机自我鉴定
2014/03/02 职场文书
销售人员工作自我评价
2014/09/21 职场文书
Python实现智慧校园自动评教全新版
2021/06/18 Python
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL
python数字图像处理数据类型及颜色空间转换
2022/06/28 Python