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
nginx 多个location转发任意请求或访问静态资源文件的实现
Mar 31 Servers
Nginx 根据URL带的参数转发的实现
Apr 01 Servers
nginx限制并发连接请求数的方法
Apr 01 Servers
Nginx工作原理和优化总结。
Apr 02 Servers
Nginx配置Https安全认证的实现
May 26 Servers
教你快速构建一个基于nginx的web集群项目
Nov 27 Servers
Win10 Anaconda安装python-pcl
Apr 29 Servers
如何Tomcat中使用ipv6地址
May 06 Servers
git stash(储藏)的用法总结
Jun 25 Servers
彻底卸载VMware虚拟机的超详细步骤记录
Jul 15 Servers
CentOS7 minimal 最小化安装网络设置过程
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文本数据库的搜索方法
2006/10/09 PHP
php结合飞信 免费天气预报短信
2009/05/07 PHP
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
2013/06/25 PHP
PHP翻页跳转功能实现方法
2020/11/30 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
2018/08/21 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
2008/11/03 Javascript
可以将word转成html的js代码
2010/04/11 Javascript
基于Jquery的开发个代阴影的对话框效果代码
2011/07/28 Javascript
js点击出现悬浮窗效果不使用JQuery插件
2014/01/20 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
Jquery 垂直多级手风琴菜单附源码下载
2015/11/17 Javascript
js实现继承的5种方式
2015/12/01 Javascript
细数JavaScript 一个等号,两个等号,三个等号的区别
2016/10/09 Javascript
基于JavaScript实现轮播图原理及示例
2020/04/10 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
JS对象与json字符串相互转换实现方法示例
2018/06/14 Javascript
react+antd 递归实现树状目录操作
2020/11/02 Javascript
[05:05]给小松五分钟系列 第二期介绍为什么打DOTA2
2014/07/02 DOTA
在Python中使用判断语句和循环的教程
2015/04/25 Python
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
使用Python横向合并excel文件的实例
2018/12/11 Python
在python 中实现运行多条shell命令
2019/01/07 Python
python3 打印输出字典中特定的某个key的方法示例
2019/07/06 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
Python的scikit-image模块实例讲解
2020/12/30 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
HTML5 Canvas中使用用路径描画圆弧
2015/01/01 HTML / CSS
介绍一些UNIX常用简单命令
2014/11/11 面试题
慈善晚会策划方案
2014/05/14 职场文书
志愿者爱心公益活动策划方案
2014/09/15 职场文书
2014年城管工作总结
2014/11/20 职场文书
2014年移动公司工作总结
2014/12/08 职场文书
MySQL 十大常用字符串函数详解
2021/06/30 MySQL
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android