Kubernetes Control Plane(Kubernetes 控制平面详解)(7)

作者 : 慕源网 本文共2568个字,预计阅读时间需要7分钟 发布时间: 2021-11-26 共1.2K人阅读

本文是Kubernetes权威指南系列的一部分,你可以点击Kubernetes权威指南查看所有教程

Kubernetes Control Plane介绍

Kubernetes control Plane 负责维护集群中任何对象的 Desire State。它还管理工作节点和 Pod。它由 Kube-api-server 等五个组件组成,即 Kube-scheduler、Kube-controller-manager 和 cloud-controller-manager。运行这些组件的节点称为“主节点”。这些组件可以在单个节点或多个节点上运行,但建议在生产中在多个节点上运行以提供高可用性和容错性。每个控制平面的组件都有自己的职责,但是它们一起对集群做出全局决策,检测和响应由用户或任何集成的第三方应用程序生成的集群事件。

 Kubernetes Control Plane如何工作?

让我们通过一个例子来理解Kubernetes control plane的工作,如下所示:

kubectl get nodes: kubectl 是一个命令行工具,我们用来与 Kubernetes 集群交互并对其进行管理。在这里,当我们运行此命令时,它会通过 HTTP 向集群发出 API 调用,并由“kube-apiserver”处理。’kube-apiserver’ 与其他控制平面的组件(即 ‘etcd’ 数据存储)通信,它获取数据并通过 HTTPs 发送回控制台,我们可以在终端上看到节点的详细信息。

Kubernetes Control Plane的组件

让我们了解 Kubernetes Control Plane的不同组件。Kubernetes Control Plane有以下五个组件:

  • Kube-api-server
  • Kube-scheduler
  • Kube-controller-manager
  • etcd
  • cloud-controller-manager

1. Kube-API-server

Kube-api-server 是控制平面的主要组件,因为所有流量都通过 api-server,如果控制平面的其他组件必须与 ‘etcd’ 数据存储通信,则它们也连接到 api-server,因为只有 Kube-api-server可以与“etcd”通信。它为 REST 操作提供服务,并为 Kubernetes Control Plane提供前端,该控制平面公开 Kubernetes API,其他组件可以通过该 API 与集群通信。有多个 api-server 可以水平部署以使用负载均衡器来平衡流量。

2. Kube-scheduler

Kube-scheduler 负责将新创建的 Pod 调度到最佳可用节点以在集群中运行。但是,可以在部署 Pod 或部署 Pod 之前,通过在 YAML 文件中指定关联性、反规范或约束,在特定节点、特定区域或根据节点标签等安排 Pod 或一组 Pod。部署。如果没有满足指定要求的可用节点,则不会部署 Pod 并保持未调度状态,直到 Kube-scheduler 找不到可行的节点。可行节点是满足 Pod 调度所有要求的节点。

Kube-scheduler 使用 2 步过程为集群中的 pod 选择节点、过滤和评分。在过滤过程中,Kube-scheduler 通过运行检查来找到一个可行的节点,比如节点是否有足够的可用资源来为这个 pod 提到。过滤掉所有可行节点后,它会根据活动得分规则为每个可行节点分配一个分数,并在得分最高的节点上运行 Pod。如果多个节点具有相同的分数,则它随机选择一个。

3. Kube-controller-manager

Kube-controller-manager 负责运行控制器进程。它实际上由四个进程组成,并作为一个进程运行以降低复杂性。它确保当前状态与期望状态匹配,如果当前状态与期望状态不匹配,则对集群进行适当的更改以达到期望状态。

它包括节点控制器、复制控制器、端点控制器以及服务帐户和令牌控制器。

  • 节点控制器: – 它管理节点并密切关注集群中的可用节点,并在任何节点出现故障时做出响应。
  • 复制控制器: – 它确保为集群中的每个复制控制器对象运行正确数量的 Pod。
  • Endpoints 控制器: – 它创建 Endpoints 对象,例如,为了向外部公开 pod,我们需要将其加入服务。
  • 服务帐户和令牌控制器: – 负责创建默认帐户和 API 访问令牌。例如,每当我们创建一个新命名空间时,我们需要一个服务帐户和访问令牌来访问它,因此这些控制器负责为新命名空间创建默认帐户和 API 访问令牌。

4.etcd

etcd 是 Kubernetes 的默认数据存储,用于存储所有集群数据。它是一个一致的、分布式的、高度可用的键值存储。etcd 只能通过 Kube-api-server 访问。如果其他控制平面的组件必须访问 etcd,则必须通过 kube-api-server。etcd 不是 Kubernetes 的一部分。它是由云原生计算基金会支持的完全不同的开源产品。我们需要为 etcd 设置一个适当的备份计划,这样如果集群出现问题,我们可以恢复备份并快速恢复业务。

5. cloud-controller-manager

cloud-controller-manager 允许我们将本地 Kubernetes 集群连接到云托管的 Kubernetes 集群。它是一个单独的组件,仅与云平台交互。云控制器管理器的控制器取决于我们运行工作负载的云提供商。如果我们有本地 Kubernetes 集群,或者我们为了学习目的在自己的 PC 上安装了 Kubernetes,则它不可用。cloud-controller-manager 还在单个进程中包含三个控制器,它们是节点控制器、路由控制器和服务控制器。

  • 节点控制器: – 它不断检查托管在云提供商中的节点的状态。例如,如果任何节点没有响应,则它会检查该节点是否已在云中删除。
  • 路由控制器: – 它在底层云基础设施中控制和设置路由。
  • 服务控制器: – 创建、更新和删除云提供商负载均衡器。

结论

Kubernete 的控制平面是 Kubernetes 集群的核心。如果我们在一个集群中有多个主节点,那么 kube-scheduler 和 controller-manager 必须一次只在一个节点上运行,在其他节点上这些将处于备用模式。etcd 是 Kubernetes 的默认数据存储,但是我们可以根据需要使用不同的键值数据存储。


慕源网 » Kubernetes Control Plane(Kubernetes 控制平面详解)(7)

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录