zl程序教程

您现在的位置是:首页 >  后端

当前栏目

kubernetes集群架构和组件

2023-09-11 14:21:18 时间

前言

环境:centos7.9

kubernetes集群架构图

在这里插入图片描述
在这里插入图片描述

kubernetes集群组件介绍

k8s集群包括2种角色:master管理节点和node工作节点,至少要有一个node工作节点。

kubectl 是一个客户端的管理工具,直接管理API server,提供一个请求到一个api server,中间有一个auth认证(判断是否有权限访问)。

Master 节点包含4大组件,分别是:kube-api server 、kube-controller-manager、kube-scheduler、etcd,备注:etcd可以单独部署集群,不必在master节点上。

组件名称功能作用
kube-apiservermaster核心组件,k8s集群的统一访问入口,各组件的协调者,以RESTful API提供接口方式,所有的对象资源的增删改查和监听操作都交给APIServer处理后再提交给etcd数据库做持久化存储
kube-controller-manager处理集群中常规后台任务,一个资源对应一个控制器,而controller-Manager就是负责处理这些控制器的,例如 deployment-controller、endpoint-controller(负责维护集群的状态,比如程序部署安排,故障检测,自动扩展,滚动更新等)
kube-schedulerscheduler根据调度算法为新创建的pod选择一个node节点(负责集群资源调度,按照调度策略将pod绑定到某个node节点上,即给pod分配一个家)
etcd分布式键值存储数据库,用于保存集群状态数据,比如Pod,Service等对象信息,etcd可以有多个(etcd数据库集群),也可以不与master节点在一起,只要master能通过网络连接etcd数据库即可

Node节点包含2大组件,分别是:kubelet、kube-proxy

组件名称功能作用
kubeletkubelet 是Master在Node节点上的Agent,管理node节点主机运行容器的生命周期,比如创建容器,Pod挂载数据卷,下载secret,获取容器和节点状态等工作,kubelet 将每个Pod转换成一组容器(负责维护容器的生命周期,即通过控制docker来创建、更新、销毁容器)
kube-proxy在Node节点上实现Pod网络代理,维护网络规则和四层负载均衡工作,实现让Pod节点(一个或者多个容器)对外提供服务(负责提供集群内部的服务发现和负载均衡)

下面以部署一个nginx的服务来说明k8s各组件的调用关系:
1、首先要明确,一旦k8s环境启动之后,master和node都会将自身的信息存储到etcd数据库中;
2、一个nginx pod的创建请求,首先会被发送到master节点的api-server组件;
3、apiServer组件会调用scheduler,让scheduler组件来决定应该把这个pod调度到哪个node节点上;
4、确定好节点之后,api-server调用controller-manager去调度node节点安装nginx pod;
5、kubelet 收到指令后会去通知docker,然后由docker来启动一个nginx的pod;
6、这样一个nginx的服务就启动运行了,想要外部能访问nginx服务,还需要通过kube-proxy来对pod产生访问的代理,这样外界用户就能访问集群中的nginx服务了。

k8s集群结构类型

kubernetes集群架构的类型大致分为2中:一主多从、多主多从
1、一主多从:一台master节点,多台node节点,搭建简单,但有单机故障风险,适用于测试环境;
2、多主多从:多台master、多台node节点,搭建麻烦,安全性高,适用于生成环境;
在这里插入图片描述