K8s组件全解析,你需要知道的一切秘密( 二 )

  • 配置管理: etcd 经常用于存储分布式应用的配置数据 。这使得跨多个应用程序实例更新配置设置变得更加容易 。
  • 服务发现: etcd 可用于服务发现 , 允许应用程序动态地发现分布式系统中的服务位置 。
  • 领导者选举: etcd 的 Raft 共识算法也可以用于领导者选举场景,其中分布式系统需要选择一个协调的领导者节点 。
    1. 安全性: etcd 支持认证和传输加密,以确保集群内的通信安全性 。
    3、kube-schedulerkube-scheduler 是 Kubernetes 集群中的一个核心组件,负责在集群中选择合适的节点(Node)来运行新创建的 Pod 。它根据一系列的策略和条件,将 Pod 分配到最合适的节点上,以实现负载均衡和资源利用最优化 。
    以下是 kube-scheduler 的主要工作原理和特点:
    • 节点选择策略:kube-scheduler 根据一组可配置的节点选择策略来决定将 Pod 分配到哪个节点 。这些策略可以根据资源需求、亲和性(Affinity)、反亲和性(Anti-Affinity)、节点污点(TAInts)等因素进行设置 。
    • 资源利用优化:kube-scheduler 会考虑集群中每个节点的资源利用情况,以确保新的 Pod 被分配到资源充足的节点上,从而避免资源浪费和过度拥塞 。
    • 亲和性和反亲和性:kube-scheduler 可以配置 Pod 对某些节点的亲和性或反亲和性 。这意味着 Pod 可以被分配到满足指定标签的节点上,或者避免分配到具有特定标签的节点上 。
    • 节点污点和容忍度: 节点可以设置污点,表示它们有某些限制条件 , 如特定的硬件或软件 。Pod 可以通过容忍度设置来表示它们可以容忍的节点污点,这样 kube-scheduler 就会将 Pod 分配到与其容忍度匹配的节点上 。
    • 插件扩展:kube-scheduler 允许用户通过插件来定制节点选择过程 。这使得用户可以根据自己的需求添加自定义的调度策略 。
    • 可扩展性:kube-scheduler 支持同时运行多个调度器实例 , 每个实例可以具有不同的配置和策略 。这种架构可以根据需求进行横向扩展,以处理更大规模的集群 。
    • 调度延迟: 由于调度器需要考虑多种因素来做出决策,因此在创建新 Pod 时可能会出现一定的调度延迟 。这取决于集群的负载、调度策略和其他因素 。
    4、kube-controller-managerkube-controller-manager 是 Kubernetes 集群中的一个核心组件,它负责管理各种控制器,监控集群状态,以及确保集群中的实际状态与期望状态保持一致 。这些控制器负责自动化集群中的各种任务和功能,例如副本控制、节点管理、服务和端点等 。
    以下是 kube-controller-manager 的一些主要功能和控制器示例:
    • Replication Controller 控制器: 负责管理Pod副本数,确保在集群中始终有指定数量的Pod实例在运行 。如果Pod数目少于期望的数量,Replication Controller 将创建新的 Pod 副本 。
    • Deployment 控制器: 基于声明式配置 , 管理 Pod 的部署和更新 。它可以创建和管理多个版本的应用程序,支持滚动更新和回滚 。
    • Node Controller 控制器: 负责监控节点的状态,并确保集群中的节点数目保持在所需的范围内 。如果节点离线或不可用,Node Controller 将采取措施进行调整 。
    • Service Controller 控制器: 确保 Service 对象中定义的网络终结点与底层 Pod 的变化保持一致 。它通过更新底层的 Endpoints 对象来实现 。
    • Namespace Controller 控制器: 确保 Namespace 的创建和删除符合预期 , 并在命名空间被删除时清理相关资源 。
    • Persistent Volume Controller 控制器: 监控 Persistent Volume 和 Persistent Volume Claim 的状态,确保正确的存储资源分配 。
    • Job Controller 控制器: 用于管理一次性任务,确保任务的成功执行 。它可以处理任务的重试和失败 。
    • DaemonSet 控制器: 确保每个节点上都运行有一个 Pod 的副本,适用于在每个节点上运行特定任务的场景 。
    5、kubeletkubelet 是 Kubernetes 集群中的一个重要组件,运行在每个节点上,负责管理该节点上的容器和Pod 。它与控制平面(如 API Server 和 kube-controller-manager)通信,确保节点上的容器与期望的状态保持一致 。


    推荐阅读