Kubernetes - 架构


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

Kubernetes - 集群架构

如下图所示,Kubernetes 遵循客户端-服务器架构。其中,我们将master安装在一台机器上,将node安装在不同的Linux机器上。

集群架构

主节点和节点的关键组件在下面的部分中定义。

Kubernetes - 主控机组件

以下是 Kubernetes Master Machine 的组件。

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

API服务器

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

控制器经理

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

调度程序

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

Kubernetes - 节点组件

以下是与 Kubernetes master 通信所需的 Node 服务器的关键组件。

码头工人

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

库贝莱特服务

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

Kubernetes 代理服务

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

Kubernetes - 主节点和节点结构

下图展示了 Kubernetes Master 和 Node 的结构。

主节点结构