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 09 Servers
nginx实现发布静态资源的方法
Mar 31 Servers
Nginx本地目录映射实现代码实例
Mar 31 Servers
Nginx缓存设置案例详解
Sep 15 Servers
Nginx设置HTTPS的方法步骤 443证书配置方法
Mar 21 Servers
Apache Pulsar结合Hudi构建Lakehouse方案分析
Mar 31 Servers
Nginx 安装SSL证书完成HTTPS部署
Apr 28 Servers
解决IIS7下无法绑定https主机的问题
Apr 29 Servers
Nginx 常用配置
May 15 Servers
docker 制作mysql镜像并自动安装
May 20 Servers
Tomcat 与 maven 的安装与使用教程
Jun 16 Servers
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
Aug 14 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
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
2016/07/02 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
PHP去除空数组且数组键名重置的讲解
2019/02/28 PHP
json2.js的初步学习与了解
2011/10/06 Javascript
jQuery获得内容和属性方法及示例
2013/12/02 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
浅谈Javascript中的12种DOM节点类型
2016/08/19 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
JS判断非空至少输入两个字符的简单实现方法
2017/06/23 Javascript
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
Vue加载组件、动态加载组件的几种方式
2018/08/31 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
2019/05/04 jQuery
微信小程序图表插件wx-charts用法实例详解
2019/05/20 Javascript
jquery将json转为数据字典的实例代码
2019/10/11 jQuery
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
Pycharm更换python解释器的方法
2018/10/29 Python
python 列表递归求和、计数、求最大元素的实例
2018/11/28 Python
我就是这样学习Python中的列表
2019/06/02 Python
Pytorch 实现自定义参数层的例子
2019/08/17 Python
Python自动化之UnitTest框架实战记录
2020/09/08 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
html5实现完美兼容各大浏览器的播放器
2014/12/26 HTML / CSS
H5最强接口之canvas实现动态图形功能
2019/05/31 HTML / CSS
html5自动播放mov格式视频的实例代码
2020/01/14 HTML / CSS
印度最大的旅游网站:MakeMyTrip
2016/10/05 全球购物
美国克罗格超市在线购物:Kroger
2019/06/21 全球购物
关于Java String的一道面试题
2013/09/29 面试题
党支部书记岗位责任制
2014/02/11 职场文书
高中毕业生的个人自我评价
2014/02/21 职场文书
社会工作专业求职信
2014/07/15 职场文书
公务员党员评议表自我鉴定
2014/09/14 职场文书
开幕式邀请函
2015/01/31 职场文书
幼儿园教师自我评价
2015/03/04 职场文书
个人承诺书格式范文
2015/04/29 职场文书
中学图书馆工作总结
2015/08/11 职场文书