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 相关文章推荐
扩展多台相同的Web服务器
Apr 01 Servers
小程序后台PHP版本部署运行 LNMP+WNMP
Apr 01 Servers
教你快速开启Apache SkyWalking的自监控
Apr 25 Servers
Nginx四层负载均衡的配置指南
Jun 11 Servers
Nginx虚拟主机的配置步骤过程全解
Mar 31 Servers
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
Apr 07 Servers
在Docker容器中部署SQL Server
Apr 11 Servers
Win10 Anaconda安装python-pcl
Apr 29 Servers
Nginx配置之禁止指定IP访问
May 02 Servers
鲲鹏 CentOS 7 安装Python3.7
May 11 Servers
nginx配置指令之server_name的具体使用
Aug 14 Servers
Flink 侧流输出源码示例解析
Sep 23 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数组应用之比较两个时间的相减排序
2008/08/18 PHP
php中hashtable实现示例分享
2014/02/13 PHP
PHP获取数组最后一个值的2种方法
2015/01/21 PHP
JavaScript 利用StringBuffer类提升+=拼接字符串效率
2009/11/24 Javascript
基于node.js的快速开发透明代理
2010/12/25 Javascript
JS中Location使用详解
2015/05/12 Javascript
node.js从数据库获取数据
2016/05/08 Javascript
React Native实现简单的登录功能(推荐)
2016/09/19 Javascript
Angular之toDoList的实现代码示例
2017/12/02 Javascript
React-native桥接Android原生开发详解
2018/01/17 Javascript
深入理解ES6中let和闭包
2018/02/22 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
Angular6中使用Swiper的方法示例
2018/07/09 Javascript
js键盘事件实现人物的行走
2020/01/17 Javascript
[51:17]Mski vs VGJ.S Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
Python3里的super()和__class__使用介绍
2015/04/23 Python
理解Python中的绝对路径和相对路径
2017/08/30 Python
python如何实现int函数的方法示例
2018/02/19 Python
浅析Python数据处理
2018/05/02 Python
python批量复制图片到另一个文件夹
2018/09/17 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
2019/05/06 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
2020/01/06 Python
Pandas的Apply函数具体使用
2020/07/21 Python
python编程的核心知识点总结
2021/02/08 Python
AmazeUI 输入框组的示例代码
2020/08/14 HTML / CSS
Street One瑞士:德国现代时装公司
2019/10/09 全球购物
毕业自荐信
2013/12/16 职场文书
退休教师欢送会主持词
2014/03/31 职场文书
公务员群众路线心得体会
2014/11/03 职场文书
认真学习保证书
2015/02/26 职场文书
投资公司董事长岗位职责
2015/04/16 职场文书
升职自荐书
2019/05/09 职场文书
Django REST framework 限流功能的使用
2021/06/24 Python
关于使用Redisson订阅数问题
2022/01/18 Redis
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电