kubernetes组件
一个Kubernetes集群由一组被称作节点的工作机器组成。这些节点上运行 Kubernetes 所管理的容器化应用。集群中至少有一个工作节点和一个管理节点。
工作节点托管作为应用程序组件的 Pod ,管理节点管理集群中的工作节点和Pod 。在生产环境中,多个管理节点用于为集群提供容错性和高可用性。
一、控制平面组件(Control Plane Components)
控制平面的组件对集群做出全局决策(比如调度),以及检测和响应集群事件(例如,当不满足部署的 replicas 字段时,启动新的 pod)。
控制平面组件可以在集群中的任何节点上运行。然而,为了简单起见,设置脚本通常会在同一个计算机上启动所有控制平面组件,并且不会在此计算机上运行用户容器。
1.kube-apiserver
管理节点上负责提供 Kubernetes API 服务的组件;它是 Kubernetes 控制面的前端。
kube-apiserver在设计上考虑了水平扩缩的需要。换言之,通过部署多个实例可以实现扩缩,且可以平衡实例间的流量。
2.etcd
etcd 是兼具一致性和高可用性的键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库。
3.kube-scheduler
主节点上的组件,该组件监视那些新创建但未指定运行节点的 Pod,并选择节点让 Pod 在上面运行。
调度决策考虑的因素包括单个 Pod 和 Pod 集合的资源需求、硬件/软件/策略约束、亲和性和反亲和性规范、数据位置、工作负载间的干扰和最后时限。
4.kube-controller-manager
在主节点上运行控制器的组件。从逻辑上讲,每个控制器都是一个单独的进程,但是为了降低复杂性,它们都被编译到同一个可执行文件,并在一个进程中运行。
这些控制器包括:
节点控制器(Node Controller): 负责在节点出现故障时进行通知和响应;
副本控制器(Replication Controller): 负责为系统中的每个副本控制器对象维护正确数量的 Pod;
端点控制器(Endpoints Controller): 填充端点(Endpoints)对象(即加入 Service 与 Pod);
服务帐户和令牌控制器(Service Account & Token Controllers): 为新的命名空间创建默认帐户和 API 访问令牌。
5.cloud-controller-manager
云控制器管理器使您可以将集群链接到云提供商的API,与云提供商进行交互,并将与该云平台交互的组件与仅与集群交互的组件分开。如果您是在自己的场所或PC内的学习环境中运行Kubernetes,则该群集没有云控制器管理器。
以下控制器具有云提供商依赖性:
节点控制器(Node Controller): 用于检查云提供商以确定节点是否在云中停止响应后被删除;
路由控制器(Route Controller): 用于在底层云基础架构中设置路由;
服务控制器(Service Controller): 用于创建、更新和删除云提供商负载均衡器;
数据卷控制器(Volume Controller): 用于创建、附加和装载卷、并与云提供商进行交互以编排卷。
二、Node 组件(Node Components)
节点组件在每个节点上运行,维护运行的 Pod 并提供 Kubernetes 运行环境。
1.kubelet
在集群中每个节点上运行的代理。它保证容器都运行在 Pod 中。
kubelet 接收一组通过各类机制提供给它的 PodSpecs,确保这些 PodSpecs 中描述的容器处于运行状态且健康。kubelet 不会管理不是由 Kubernetes 创建的容器。
2.kube-proxy
是集群中每个节点上运行的网络代理,实现 Kubernetes Service 概念的一部分。
kube-proxy 维护节点上的网络规则。这些网络规则允许从集群内部或外部的网络会话与 Pod 进行网络通信。
如果操作系统提供了数据包过滤层并可用的话,kube-proxy会通过它来实现网络规则。否则,仅转发流量本身。
3.Container Runtime
容器运行环境是负责运行容器的软件。
Kubernetes 支持多个容器运行环境: Docker、 containerd、cri-o、 rktlet 以及任何 Kubernetes CRI (容器运行环境接口)实现。
三、插件(Addons)
插件使用 Kubernetes 资源 (DaemonSet, Deployment等) 实现集群功能。因为它们提供了集群级别的功能,所以插件的命名空间资源属于kube-system命名空间。
1.DNS
尽管其他附加组件并非严格要求的,但是所有Kubernetes集群都应具有集群DNS,因为许多示例都依赖于此。
集群 DNS 是一个 DNS 服务器,和您部署环境中的其他 DNS 服务器一起工作,为 Kubernetes 服务提供DNS记录。
Kubernetes 启动的容器自动将 DNS 服务器包含在 DNS 搜索中。
2.Dashboard
Dashboard 是 Kubernetes 集群通用的基于 Web 的 UI,它允许用户管理集群中运行的应用程序以及集群本身,并进行故障排除。
3.Container Resource Monitoring
容器资源监控将关于容器的一些常见的时间序列指标保存到一个集中的数据库中,并提供用于浏览这些数据的界面。
4.Cluster-level Logging
集群层面日志机制负责将容器的日志数据保存到一个集中的日志存储中,该存储能够提供搜索和浏览接口。

浙公网安备 33010602011771号