wiki/运维/容器/Kubernetes/笔记/2.Kubernetes架构.md
2025-01-02 10:46:09 +08:00

3.3 KiB
Raw Permalink Blame History

Kubernetes 集群主要分为两个平面,分别是控制组件、计算组件、扩展组件。

image.png

控制面组件

组件 说明
kube-apiserver其他模块通过API Server查询或者修改数据只有API Server才能直接操作etcd 对外提供RESTful API接口、集群管理事件的统一入口负责集群的监听、认证、授权、准入控制。对内负责协调kube-controller-manager、kube-scheduler、kubelet、kube-proxy所有的对象资源的增删改查都交给APIServer处理后再提交给etcd做持久化存储。
kube-controller-manager渊博的学者功能类都由它实现可以自动补全yaml文件 从逻辑上讲每个控制器都是一个单独的进程但是为了降低复杂性它们都被编译到同一个可执行文件并在一个进程中运行。负责管理集群各种资源保证资源处于预期的状态。ControllerManager由多种controller组成包括Node Controller、Job controller、Endpoints Controller、Service Account & Token Controllers等。
kube-scheduler kube-scheduler在预选阶段首先过滤掉不满足当前Pod请求的Nodes。在优选阶段根据一系列函数对剩余可承接本次调度的Nodes评分选出其中得分最高的 Node并将调度决定告知kube-apiserver这个过程叫做绑定(Binding)。
etcd etcd是一个高可用的分布式键值数据库可用于服务发现。etcd采用raft一致性算法基于Go语言实现。Eted作为一个高可用键值存储系统天生就是为集群化而设计的。用于保存Kubernetes资源状态数据。

计算面组件

组件 作用
kubelet 每个Nodes都以systemd 服务的形式运行着软件包安装的kubelet。kubelet是kube-apiserver在node上的容器运行时代理当Scheduler确定在某个Node上运行Pod后会将Pod的具体配置信息(image、volume等)发送给该节点的 kubeletkubelet会根据这些信息调用该节点上的容器运行时创建和维护容器的生命周期并默认每隔10s向kube-apiserver 报告当前节点的运行状态。
kube-proxy 集群出厂使用DaemonSet控制器在每个Nodes上运行kube-proxy Podkube-proxy配合service做服务发现负责维护每个Nodes上iptables NAT表的自定义链或LvS的路由规则表。将访问的service的TCP/UDP数据流转发到后端Pod的真实私有IP地址。
container Runtime 容器运行时是负责运行容器的软件。Kubernetes支持多个容器运行环境: Docker (+ cri-dockerd)、 Containerd、CRI-O以及任何其它实现Kubernetes CRI(容器运行环境接口)。

扩展组件

组件 作用
CroeDNS 为集群提供DNS解析能力
Dashborad 提供web管理界面
Metrics-Server 集群监控指标服务
Calico 网络插件,提供集群内网络能力
Ingress 提供七层访问能力