新手应该明白的 Kubernetes 架构
发布时间:2022-06-09 11:51:28 所属栏目:云计算 来源:互联网
导读:etcd 是一个快速、分布式、一致的键值存储,用作持久存储 Kubernetes 对象数据(如 pod、replication controllers, secrets, services 等)的后备存储。实际上,etcd 是 Kubernetes 存储集群状态和元数据的唯一地方。唯一直接与 etcd 对话的组件是 Kubernete
etcd 是一个快速、分布式、一致的键值存储,用作持久存储 Kubernetes 对象数据(如 pod、replication controllers, secrets, services 等)的后备存储。实际上,etcd 是 Kubernetes 存储集群状态和元数据的唯一地方。唯一直接与 etcd 对话的组件是 Kubernetes API Server。所有其他组件通过 API Server 间接读取和写入数据到 etcd。 提供在 etcd 中存储对象的一致方式。 执行这些对象的验证,以便客户端无法存储配置不正确的对象,如果它们直接写入 etcd 数据存储区可能会发生这种情况。 提供 RESTful API 来创建、更新、修改或删除资源。 提供乐观并发锁定,因此在并发更新的情况下,对对象的更改永远不会被其他客户端覆盖。 对客户端发送的请求执行身份验证和授权。它使用插件提取客户端的用户名、用户 ID 和用户所属的组,并确定经过身份验证的用户是否可以对请求的资源执行请求的操作。 如果请求试图创建、修改或删除资源,则执行准入控制。示例:AlwaysPullImagesDefaultStorageClass、ResourceQuota 等。 为客户端实现监视机制(类似于 etcd)以监视更改。这允许调度程序和 Controller Manager 等组件以松散耦合的方式与 API Server 交互。 Controller Manager 在 Kubernetes 中,控制器是监控集群状态的控制循环,然后根据需要进行更改或请求更改。每个控制器都尝试将当前集群状态移动到更接近所需状态。控制器跟踪至少一种 Kubernetes 资源类型,并且这些对象有一个表示所需状态的规范字段。 控制器示例: Replication Manager(ReplicationController 资源的控制器) ReplicaSet、DaemonSet 和 Job 控制器 Deployment 控制器 StatefulSet 控制器 node 控制器 service 控制器 endpoints 控制器 namespace 控制器 PersistentVolume 控制器 控制器使用监视机制来获得更改通知。他们监视 API Server 对资源的更改并针对每个更改执行操作,无论是创建新对象还是更新或删除现有对象。大多数时候,这些操作包括创建其他资源或自己更新被监视的资源,但是由于使用监视并不能保证控制器不会错过任何事件,它们还会定期执行重新列出操作以确保没有错过了任何东西。 节点的选择分为两步: 过滤所有节点的列表以获取 pod 可以调度到的可接受节点列表。(例如,PodFitsResources 过滤器检查候选节点是否有足够的可用资源来满足 Pod 的特定资源请求) 对从第 1 步获得的节点列表进行评分并对它们进行排名以选择最佳节点。如果多个节点得分最高,则使用循环法确保 pod 均匀地部署在所有节点上。 调度决策需要考虑的因素包括: Pod 对硬件/软件资源的请求?节点是否报告内存或磁盘压力情况? 该节点是否具有与 pod 规范中的节点选择器匹配的标签? 如果 pod 请求绑定到特定的主机端口,该端口是否已在该节点上占用? pod 是否容忍节点的污点? pod 是否指定节点亲和性或反亲和性规则?等。 调度程序不会指示所选节点运行 pod。Scheduler 所做的只是通过 API Server 更新 pod 定义。API server 通过 watch 机制通知 Kubelet pod 已经被调度。然后目标节 (编辑:锡盟站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐