【K8S】集群组件有什么?每个作用是什么?各组件之间关系

K8S集群包括master节点和多个worker 节点。

下面从master和worker 两个方面来说集群的组件:

master

master负责调度管理整个集群,包含以下组件:

api server

是整个集群的网关接口,由kube-apiserver守护程序运行为服务,通过HTTP/HTTPS将 RESTFUL API公开给用户,是发往集群的所有REST命令的接入点,用于接收,校验,响应所有REST请求,并将结果存储在etcd中。

etcd

k8s集群的所有状态信息都存储在etcd内,etcd是基于raft协议开发的分布式key-value存储,etcd还为存储的数据提供了watch(监听)机制,用于监视和推送变更,api server是k8s集群内唯一可以和etcd通信的组件

controller manager

k8s提供了数十种控制器,包括 node controller,namespace controller,service controller,endpoints controller,replication controller,job controller,daemon set controller 等 。控制器的作用是负责实现用户通过api server提交的状态声明,然后通过一些列操作驱动api server对象的当前状态逼近,或等于期望状态。而每个控制器都是一个单独的进程,因此为了降低复杂性,k8s将这些控制器统一编排到一个二进制程序文件,kube-controller-manager 并以单个进程运行

scheduler

为新建立的pod进行节点选择,即就是分配合适的机器,负责计算的资源调度。具体来说:为api server接收到的每一个pod创建请求,并在集群上为其匹配到一个最佳工作节点,kube-scheduler是默认的调度器程序,它在匹配工作节点时的考量因素包括硬件,软件,策略约束、亲和力,规范等特征。

Worker 

一个k8s集群通常有多个node节点,来提供足够的承载力来运行容器化应用和其他的工作负载。每个node会定期向master报告自身的状态变化并接受master管理。包含以下组件:

kubelet

Kubelet 在每个node上都有,包括主节点,它负责处理master节点下发到本节点的任务,管理pod,及pod中的容器,每个kubelet进程都会在api server上注册自身的信息,定期上master上报节点资源使用情况,并通过caAdvisor监视器监控容器,节点资源,这里的caAdvisor 已被默认集成到kubelet组件内,用来监控工作节点资源。

容器运行时环境docker

pod是一组容器集合,并不负责真正运行容器,真正运行容器的是底层的容器运行时。kubelet通过CRI(容器运行时接口)来支持多种类型的容器运行时环境,包括docker,containerd,CRI-O,runC等。

kube-proxy

监听 api server中service 和endpoint的变化情况,创建路由规则来提供服务ip和负载均衡功能,简单来说就是kube-proxy相当于是service的透明代理兼负载均衡器,核心功能是将某个Service的访问请求转发至后端的多个pod实例。

add-ons

插件分为必须插件和可选插件。

必须有的插件:网络插件,常用的有flannel,calico,canal,weave net等;kubeDNS

可选:ingress controller,coreDNS,集群日志系统, 容器资源监控系统;

需要注意的是:区别于master节点上的控制器管理器内的控制器,ingress controller不运行为 kube-controller-manager的一部分,仅是k8s集群的一个附件,需要在集群上单独部署。

整体架构图:

可以得到K8S架构图如下图,重点配合以上文字理解各个组件的作用以及组件之间的关系

7d97fbb1d29a4651932c2d29d11b430e.png

 

 

 

 

 

 

Kubernetes(简称 K8s)是一个用于自动化部署、扩展和管理容器化应用程序的开源平台。它的核心是一组用于管理容器化应用程序的组件,这些组件可以在不同的节点上运行,并协同工作来提供一个统一且可靠的容器管理环境。Kubernetes组件主要包括以下几个: 1. kube-apiserver:Kubernetes API 服务器,是 Kubernetes 的控制面板的前端,用于暴露 Kubernetes API 服务,提供集群管理和控制接口。 2. etcd:Kubernetes 使用 etcd 存储集群状态和元数据,是一个高可用的分布式键值存储系统。 3. kube-scheduler:Kubernetes 调度器,负责将容器化应用程序部署到集群中的节点上,根据一定的算法选择最优的节点来运行容器。 4. kube-controller-manager:Kubernetes 控制器管理器,包含一组控制器,用于检测和响应集群状态的变化,保证集群中的容器始终处于期望的状态。 5. kubelet:Kubernetes 节点代理,运行在每个节点上,负责管理该节点上的容器和容器化应用程序,与 kube-apiserver 交互,向其报告节点和容器的状态。 6. kube-proxy:Kubernetes 代理,负责在集群中提供服务发现和负载均衡功能。 7. Container Runtime:容器运行时,Kubernetes 支持多种容器运行时,比如 Docker、rkt 等,用于运行和管理容器化应用程序。 以上就是 Kubernetes 的主要组件,它们各自承担不同的职责,共同协作来实现容器化应用程序的自动化部署、扩展和管理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值