加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 云计算 > 正文

新手应该明白的 Kubernetes 架构

发布时间:2022-06-09 14:25:50 所属栏目:云计算 来源:互联网
导读: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 已经被调度。然后目标节

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读