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 相关文章推荐
win10安装配置nginx的过程
Mar 31 Servers
Nginx配置之实现多台服务器负载均衡
Aug 02 Servers
Nginx stream 配置代理(Nginx TCP/UDP 负载均衡)
Nov 17 Servers
关于Nginx中虚拟主机的一些冷门知识小结
Mar 03 Servers
Tomcat项目启动失败的原因和解决办法
Apr 20 Servers
nginx 配置指令之location使用详解
May 25 Servers
基于docker安装zabbix的详细教程
Jun 05 Servers
CentOS7安装MySQL8的超级详细教程(无坑!)
Jun 10 Servers
shell进度条追踪指令执行时间的场景分析
Jun 16 Servers
Docker与K8s关系介绍不会Docker也可以使用K8s
Jun 25 Servers
GPU服务器的多用户配置方法
Jul 07 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
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
PHP无刷新上传文件实现代码
2011/09/19 PHP
php文件包含目录配置open_basedir的使用与性能详解
2017/04/03 PHP
PHP简单实现二维数组赋值与遍历功能示例
2017/10/19 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
2020/03/23 PHP
firefox插件Firebug的使用教程
2010/01/02 Javascript
JavaScript学习笔记(十)
2010/01/17 Javascript
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
自动最大化窗口的Javascript代码
2013/05/22 Javascript
JS打开新窗口防止被浏览器阻止的方法
2015/01/03 Javascript
JavaScript分秒倒计时器实现方法
2015/02/02 Javascript
解析JavaScript的ES6版本中的解构赋值
2015/07/28 Javascript
JavaScript实现可拖拽的拖动层Div实例
2015/08/05 Javascript
对称加密与非对称加密优缺点详解
2017/02/06 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
2018/02/04 Javascript
vuex 项目结构目录及一些简单配置介绍
2018/04/08 Javascript
解决layui中table异步数据请求不支持自定义返回数据格式的问题
2018/08/19 Javascript
详解小程序rich-text对富文本支持方案
2018/11/28 Javascript
JS原型和原型链原理与用法实例详解
2020/02/05 Javascript
vuex入门最详细整理
2020/03/04 Javascript
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
Linux中Python 环境软件包安装步骤
2016/03/31 Python
Python内置函数reversed()用法分析
2018/03/20 Python
python 实现批量替换文本中的某部分内容
2019/12/13 Python
keras tensorflow 实现在python下多进程运行
2020/02/06 Python
Python图像读写方法对比
2020/11/16 Python
教师现实表现材料
2014/02/14 职场文书
承诺书范文
2014/06/03 职场文书
元旦趣味活动方案
2014/08/22 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
答辩状格式范本
2015/05/22 职场文书
演讲开场白和结束语
2015/05/29 职场文书
处罚决定书范文
2015/06/24 职场文书
vue完美实现el-table列宽自适应
2021/05/08 Vue.js
Python爬虫基础初探selenium
2021/05/31 Python
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫