Kubernetes 架构
在本章中,我们将讨论Kubernetes的基本架构。
Kubernetes – 集群架构
如下图所示,Kubernetes遵循客户端-服务器架构。其中,我们在一台机器上安装了主节点,在其他单独的Linux机器上安装了节点。
主节点和工作节点的关键组件在下面的部分中定义。
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主节点和工作节点的结构。