控制平面组件和节点组件

一、控制平面组件

控制平面的组件对集群做出全局决策(例如,调度),并且检测和响应集群事件(例如,当一个 Deployment 副本数量不满足要求时启动一个新的 Pod)。 控制平面组件可以在集群中的任何机器上运行。然而,为了简单起见,安装脚本通常会在同一台 机器上启动所有控制平面组件,并且不在这台机器上运行用户容器。

1.kube-apiserver(Kubernetes API 服务器)

API 服务器是Kubernetes 控制平面的一个组件,用于暴露Kubernetes API。它是Kubernetes 控制平面的前端。

  • API server是K8S的大脑,提供6443端口,用于集群管理。

Kubernetes API 服务器的主要实现是kube-apiserver。kube-apiserver 被设计为可以水平扩展, 即通过部署更多实例来扩展,这样就可以运行多个kube-apiserver例,并在这些实例之间平衡流量。

2.etcd

etcd作为 Kubernetes 所有集群数据的后端存储,是一个一致的、高可用的键值存储系统,是 Kubernetes 所有集群数据的后台数据库。

3.kube-scheduler(调度器)

kube-scheduler 会监视新创建的、尚未分配节点的Pod,并为它们选择一个运行节点。 在调度决策中考虑的因素包括:单个和总体资源需求、硬件/软件/策略约束、亲和性和反亲和性 规范、数据局部性、工作负载间的干扰以及期限。

4.kube-controller-manager(控制器管理器)

这是一个运行控制器进程的控制平面组件。 从逻辑上讲,每个控制器是一个独立的进程,但为了降低复杂性,它们都被编译到一个二进制文 件中,并在一个进程中运行。 有许多不同类型的控制器。以下是一些示例:

• 节点控制器:负责在节点出现故障时察觉并做出响应。

• Job 控制器:监视代表一次性任务的工作对象,然后创建Pod来运行这些任务直至完成。

• EndpointSlice 控制器:填充端点切片对象(用于在Service和Pod之间建立连接)。

• ServiceAccount 控制器:为新的命名空间创建默认的服务账户。

5.cloud-controller-manager(云控制器管理器)

这是一个 Kubernetes 控制平面组件,它嵌入了特定于云的控制逻辑。云控制器管理器允许你将 集群与云提供商的API连接起来,并将与云平台交互的组件与仅与集群交互的组件区分开来。

注意:云控制器管理器只运行特定于你的云提供商的控制器。如果在本地环境运行Kubernetes, 或者在自己的个人电脑内的学习环境中运行,集群通常没有云控制器管理器

二、节点组件

节点组件在每个节点上运行,负责维护正在运行的 Pod,并提供 Kubernetes 运行时环境。

1**、kubeletKubernetes代理)-->一个服务**

kubelet 是运行在集群中每个节点上的代理程序。它确保容器在 Pod 中正常运行。

kubelet 获取通过各种机制提供的一组 Pod 规范(PodSpecs),并确保这些 Pod 规范中描述的容器正在运行且处于健康状态。kubelet 不管理非由 Kubernetes 创建的容器。

2**、kube-proxy(可选组件)**

kube-proxy 是一个网络代理,运行在集群的每个节点上,用于实现 Kubernetes 服务概念的一部分功能。

kube-proxy 维护节点上的网络规则。这些网络规则允许集群内外的网络会话与 Pod 进行通信。

如果操作系统存在可用的数据包过滤层,kube-proxy 就会使用它;否则,kube-proxy 会自行转发流量。

如果使用了自行实现服务数据包转发并提供与 kube-proxy 等效功能的网络插件,那么就无需在集群的节点上运行 kube-proxy。

**注意:**有些网络插件会提供它们自己的第三方代理实现方式,当使用这类网络插件时,节点就无

需运行 kube-proxy 组件。

3**、容器运行时(CRI)**

这是一个基础组件,使 Kubernetes 能够有效地运行容器。它负责管理 Kubernetes 环境中容器的执行和生命周期。

Kubernetes 支持诸如 containerd、CRI-O 以及任何其他符合 Kubernetes 容器运行时接口(CRI)规范的容器运行时实现

三、插件

插件使用 Kubernetes 资源(如守护进程集(DaemonSet)、部署(Deployment)等)来实现集群功能。由于这些插件提供的是集群级别的功能,所以插件的命名空间资源属于 kube-system 命名 空间。常用的插件举例如下:

1**、网络与网络策略**

• Calico 是一种网络及网络策略提供程序。Calico 支持一组灵活的网络选项,这样就能针对自

身情况选择最高效的选项,包括非覆盖式网络和覆盖式网络,支持使用或不使用边界网关协

议(BGP)。Calico 使用相同的机制来为主机、Pod(容器组)以及(如果使用 Istio 和 Envoy

的话)服务网格层的应用程序实施网络策略。

• Flannel 是一种覆盖式网络提供程序,可与 Kubernetes 配合使用。

• Gateway API(网关应用程序编程接口)是一个由 SIG Network(网络特别兴趣小组)社区管理的开源项目,它提供了一种表意丰富、可扩展且面向角色的应用程序编程接口,用于对服务网络进行建模。

2**、服务发现**

• CoreDNS 是一款灵活且可扩展的域名系统(DNS)服务器,可被安装作为 Pod 的集群内 DNS。

3**、可视化与控制**

• Dashboard 是 Kubernetes 的一个网页界面形式的控制台。提供了面向 Kubernetes 集群的通用型、基于网页的用户界面。它允许用户管理在集群中运行的应用程序、对这些应用程序进行故障排查,以及对集群本身进行管理。

4**、基础设施**

• KubeVirt 是一个可在 Kubernete 上运行虚拟机的插件,它可将虚拟机直接部署在物理服务器 (裸金属)上,而不是运行在虚拟化环境中,从而提供更高的性能和更直接的硬件访问,适合运行对性能要求较高的虚拟机。

Kubernetes 架构的灵活性使得各企业能够根据特定需求定制自己的集群,在操作复杂性、性能以及管理开销等因素之间进行权衡。

四、标签和选择算符

相关推荐
齐齐大魔王2 小时前
Linux-网络编程实战
linux·运维·网络
wanhengidc3 小时前
私有云的作用都有哪些?
运维·服务器·网络·游戏·智能手机
花阴偷移3 小时前
Ubuntu 22.04版本下配置静态IP
linux·运维·服务器·tcp/ip·ubuntu
牛马十年4 小时前
当自动化运维系统被ai重构后
运维·人工智能·自动化
Niliuershangba4 小时前
Docker Desktop 部署 ChestnutCMS 全流程:从零搭建企业级 CMS 开发环境
运维·docker·容器
Lalolander5 小时前
设备工程项目采购中缺料和浪费的痛点和解决思路
大数据·运维·设备工程项目管理系统·设备工程项目质量管控·设备工程项目成本管控
dayuOK63075 小时前
AI内容创作工具的下一个战场:从“生成”到“全流程自动化”
运维·人工智能·chatgpt·职场和发展·自动化·新媒体运营·媒体