作者:进击云原生 2022-04-19 09:38:20
云计算
云原生 在 Kubernetes 中,控制器是监控集群状态的控制循环,然后根据需要进行更改或请求更改。每个控制器都尝试将当前集群状态移动到更接近所需状态。
etcd 是一个快速、分布式、一致的键值存储,用作持久存储 Kubernetes 对象数据(如 pod、replication controllers, secrets, services 等)的后备存储。实际上,etcd 是 Kubernetes 存储集群状态和元数据的唯一地方。唯一直接与 etcd 对话的组件是 Kubernetes API Server。所有其他组件通过 API Server 间接读取和写入数据到 etcd。
Etcd 还实现了一个监视功能,它提供了一个基于事件的接口,用于异步监控键的更改。一旦密钥被更改,它的观察者就会收到通知。API Server 组件在很大程度上依赖于此来获得通知并将 etcd 的当前状态移动到所需状态。
etcd 实例的数量应该是奇数吗?
在 HA 环境中,您通常会运行 3、5 或 7 个 etcd 实例,但为什么呢?由于 etcd 是分布式数据存储,因此可以水平扩展它,但您还需要确保每个实例中的数据是一致的,为此,您的系统需要就状态达成共识。Etcd 为此使用了RAFT 共识算法。
该算法需要多数(或仲裁)集群才能进入下一个状态。如果您只有 2 个 ectd 实例,如果其中任何一个失败,则 etcd 集群无法转换到新状态,因为不存在多数,并且在 3 个实例的情况下,一个实例可能会失败并且可以达到多数的实例仍然可用。
API Server 是 Kubernetes 中唯一与 etcd 直接交互的组件。Kubernetes 以及客户端(kubectl)中的所有其他组件都必须通过 API Server 来处理集群状态。API Server 提供以下功能:
在 Kubernetes 中,控制器是监控集群状态的控制循环,然后根据需要进行更改或请求更改。每个控制器都尝试将当前集群状态移动到更接近所需状态。控制器跟踪至少一种 Kubernetes 资源类型,并且这些对象有一个表示所需状态的规范字段。
控制器示例:
控制器使用监视机制来获得更改通知。他们监视 API Server 对资源的更改并针对每个更改执行操作,无论是创建新对象还是更新或删除现有对象。大多数时候,这些操作包括创建其他资源或自己更新被监视的资源,但是由于使用监视并不能保证控制器不会错过任何事件,它们还会定期执行重新列出操作以确保没有错过了任何东西。
Controller Manager 还执行生命周期功能,例如命名空间创建和生命周期、事件垃圾回收、终止 pod 垃圾回收、级联删除垃圾回收、节点垃圾回收等。
调度程序是一个控制平面进程,它将 pod 分配给节点。它监视没有分配节点的新创建的 pod,并且对于调度程序发现的每个 pod,调度程序负责为该 pod 找到运行的最佳节点。
满足 Pod 调度要求的节点称为可行节点。如果没有合适的节点,则 pod 将保持未调度状态,直到调度程序能够放置它。一旦找到可行节点,它就会运行一组函数来对节点进行评分,并选择得分最高的节点。然后它会通知 API Server 有关所选节点的信息,此过程称为绑定。
节点的选择分为两步:
调度决策需要考虑的因素包括:
调度程序不会指示所选节点运行 pod。Scheduler 所做的只是通过 API Server 更新 pod 定义。API server 通过 watch 机制通知 Kubelet pod 已经被调度。然后目标节点上的 kubelet 服务看到 pod 已被调度到它的节点,它创建并运行 pod 的容器。
Kubelet 是在集群中的每个节点上运行的代理,是负责在工作节点上运行的所有内容的组件。它确保容器在 Pod 中运行。
kubelet 服务的主要功能有:
它在每个节点上运行,并确保一个 pod 可以与另一个 pod 对话,一个节点可以与另一个节点对话,一个容器可以与另一个容器通信等。它负责监视 API Server 以了解Service和 pod 定义的更改,以保持整个网络配置的最新状态。当一个Service由多个 pod 时,proxy会在这些 pod 之间负载平衡。
kube-proxy 之所以得名,是因为它是一个实际的代理服务器,用于接受连接并将它们代理到 Pod,当前的实现使用 iptables 或 ipvs 规则将数据包重定向到随机选择的后端 Pod,而不通过实际的代理服务器传递它们。
专注于运行容器、设置命名空间和容器的 cgroup 的容器运行时称为低级容器运行时,专注于格式、解包、管理和共享images并提供 API 以满足开发人员需求的容器运行时称为高级容器运行时(容器引擎)。
容器运行时负责:
文章标题:新手应该知道的Kubernetes架构
文章出自:http://www.mswzjz.cn/qtweb/news30/333230.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能