kubernetes集群架构和组件

前言

环境:centos7.9

kubernetes集群架构图

kubernetes集群架构和组件_第1张图片
kubernetes集群架构和组件_第2张图片

kubernetes集群组件介绍

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

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

Master 节点包含4大组件,分别是:kube-api server 、kube-controller-manager、kube-scheduler、etcd。

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

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

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

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

k8s集群结构类型

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

你可能感兴趣的:(kubernetes,docker,kubernetes)