Kubernetes(k8s) 架构
在本章中,我们将讨论 Kubernetes(k8s) 的基本架构。
Kubernetes - 集群架构
如下图所示,Kubernetes 遵循客户端-服务器架构。 其中,我们将master安装在一台机器上,将node安装在不同的Linux机器上。
master 和 node 的关键组件在下一节中定义。
Kubernetes - Master组件
以下是 Kubernetes Master 机器的组件。
etcd
它存储集群中每个节点可以使用的配置信息。 它是一种高可用性键值存储,可以分布在多个节点之间。 它只能由 Kubernetes API 服务器访问,因为它可能包含一些敏感信息。 它是一个可供所有人访问的分布式键值存储。
API 服务
Kubernetes 是一个 API 服务,它使用 API 提供集群上的所有操作。 API 服务 实现了一个接口,这意味着不同的工具和库可以很容易地与之通信。 Kubeconfig 是一个包以及可用于通信的服务器端工具。 它公开了 Kubernetes API。
控制器管理器
该组件负责调节集群状态并执行任务的大多数收集器。 一般来说,它可以被认为是一个在非终止循环中运行的守护进程,负责收集信息并将信息发送到 API 服务器。 它致力于获取集群的共享状态,然后进行更改以使服务器的当前状态达到所需状态。 关键控制器是复制控制器、端点控制器、命名空间控制器和服务帐户控制器。 控制器管理器运行不同类型的控制器来处理节点、端点等。
调度器
这是 Kubernetes master 的关键组件之一。 它是master中负责分配工作负载的服务。 它负责跟踪集群节点上工作负载的利用率,然后将工作负载放置在哪些资源可用并接受工作负载上。 换句话说,这是负责将 pod 分配给可用节点的机制。 调度程序负责工作负载利用率并将 pod 分配给新节点。
Kubernetes - 节点 组件
以下是与 Kubernetes master 通信所必需的 Node 服务器的关键组件。
Docker
每个节点的第一个要求是 Docker,它有助于在相对隔离但轻量级的操作环境中运行封装的应用程序容器。
Kubelet 服务
这是每个节点中的一个小服务,负责在控制平面服务之间传递信息。 它与 etcd
存储交互以读取配置详细信息和 wright 值。 这与 master 组件通信以接收命令和工作。 然后 kubelet 进程负责维护工作状态和节点服务器。 它管理网络规则、端口转发等。
Kubernetes 代理服务
这是在每个节点上运行的代理服务,有助于使服务对外部主机可用。 它有助于将请求转发到正确的容器,并且能够执行原始负载平衡。 它确保网络环境是可预测和可访问的,同时它也是隔离的。 它管理节点上的 pod、卷、密钥、创建新容器的健康检查等。
Kubernetes - Master 和 Node 的结构
下图展示了 Kubernetes Master 和 Node 的结构。