Kubernetes - 架构



在本章中,我们将讨论 Kubernetes 的基本架构。

Kubernetes - 集群架构

如下图所示,Kubernetes 遵循客户端-服务器架构。其中,我们在一个机器上安装了主节点,在单独的 Linux 机器上安装了工作节点。

Cluster Architecture

主节点和工作节点的关键组件在下一节中定义。

Kubernetes - 主节点组件

以下是 Kubernetes 主节点的组件。

etcd

它存储配置信息,这些信息可供集群中的每个节点使用。它是一个高可用性的键值存储,可以在多个节点之间分布。它仅可由 Kubernetes API 服务器访问,因为它可能包含一些敏感信息。它是一个分布式键值存储,所有节点都可以访问。

API 服务器

Kubernetes 是一个 API 服务器,它使用 API 提供集群上的所有操作。API 服务器实现了一个接口,这意味着不同的工具和库可以轻松地与之通信。Kubeconfig 是一个与服务器端工具一起提供的软件包,可用于通信。它公开了 Kubernetes API。

控制器管理器

此组件负责大多数调节集群状态并执行任务的控制器。一般来说,它可以被认为是一个在非终止循环中运行的守护进程,负责收集信息并将其发送到 API 服务器。它致力于获取集群的共享状态,然后进行更改以将服务器的当前状态更改为期望状态。关键控制器包括复制控制器、端点控制器、命名空间控制器和服务帐户控制器。控制器管理器运行不同类型的控制器来处理节点、端点等。

调度器

这是 Kubernetes 主节点的关键组件之一。它是主节点中负责分配工作负载的服务。它负责跟踪集群节点上工作负载的利用率,然后将工作负载放置在有可用资源并接受工作负载的节点上。换句话说,这是负责将 Pod 分配到可用节点的机制。调度器负责工作负载利用率并将 Pod 分配到新节点。

Kubernetes - 工作节点组件

以下是工作节点服务器的关键组件,这些组件对于与 Kubernetes 主节点通信是必要的。

Docker

每个节点的第一个要求是 Docker,它有助于在相对隔离但轻量级的操作系统环境中运行封装的应用程序容器。

Kubelet 服务

这是每个节点中的一个小服务,负责在控制平面服务之间中继信息。它与etcd存储交互以读取配置详细信息和写入值。它与主节点组件通信以接收命令和工作。然后,kubelet进程承担维护工作和节点服务器状态的责任。它管理网络规则、端口转发等。

Kubernetes 代理服务

这是一个在每个节点上运行的代理服务,有助于使服务可供外部主机使用。它有助于将请求转发到正确的容器,并且能够执行基本负载均衡。它确保网络环境是可预测且可访问的,同时也是隔离的。它管理节点上的 Pod、卷、密钥、创建新容器的健康检查等。

Kubernetes - 主节点和工作节点结构

下图显示了 Kubernetes 主节点和工作节点的结构。

Master and Node Structure
广告