一、单节点集群架构
1、K8S核心组件
master :
api-server:统一的调度、协调的组件、唯一与etcd、kubelet对接的组件,也是统一的client客户端对接的入口
scheduler:调度中心,用于按照定义的规则调度Pod资源到指定的node
controller Manager:控制器管理中心,用于管理、调用各种控制器资源node
ETCD:K8S的数据库节点,版本时V3.X主要用于存储K8S内部的所有资源,只和api-server交互
node:
kubelet:
-统一管理自身的node节点具体任务的执行
-做为Master管理node节点的一个代理,代理的用户身份一般是bootstrap
-统计kubelet所在节点的信息、事件,并汇总给master的api-server再保存到etcd中
kube-proxy:做为node节点的L4层代理、主要为services 提供负载均衡、映射功能(通过iptables、 ipvs方式)
client:
kubectl:
-K8S集群(客户端)命令行工具,用于管理K8集群的资源
-kubectl在对yaml文件进行管理操作时,会先检测yaml文件语法,格式,然后转化为json格式,然后与api-server进行交互(接口交互)传递指令
master管理worker node
2、解决存储
ETCD 一般来说ETCD如果用于单master节点,ETcd只有一个,用的基础版本是3,因为有listwatch机制
多节点的K8S集群,假设master+worker node 一共20台以内,ETCD中的数据为2G
3、管理K8S集群的操作,都需要在master上执行
客户端管理工具,kubectl(命令行的基操)可以对yml文件进行转换成json并且对yml文件的语法进行检查
K8S安全性要求很高,所以,会对所有使用kubectl命令行的用户本身以及权限范围进行认证(组件:AUTH)
K8S -master节点的核心组件 api-server(组件,一组代码集,通过restful api等api接口来接收来自客户端的指令信息,特点:如果来源是kubectl,那么常用的识别格式是json)
K8S-master-api-server将kubectl请求的工作记录,写入etcd,然后调用controller manager控制器管理中心中的主控制器:例如deployment,然后,再调用scheuler来执行预选优选(在此之前会再次和etcd交互,获取worker node节点的资源状态)
调度器,再通过api-server连接node01中的kubelet代理,再由kubelet执行具体的操作
kebectl核心组件
对接master的api-server(master和worker node的唯一对接途径)
管理kubectl组件所在的节点资源信息,以及执行具体的操作
收集kubelet所在的worker node节点的各种资源状态、资源使用成度、以及故障反馈等等信息,然后定期反馈给master的api-server。api-server再记录到ETCD中
kube-proxy
container(docker)