Docker 是容器打包和运行时系统的标准,主要用于管理各个节点上的容器。开发者在 Dockerfiles 中构建容器镜像,上传到镜像仓库中,用户只需从镜像仓库下载该镜像文件,就可以开始使用。

镜像仓库分为公有镜像仓库和私有镜像仓库。Docker Hub 是市面上主流的公有镜像仓库。除了公有镜像仓库以外,很多企业为了节省网络带宽和提高镜像资源使用率,也会配置自己的私有镜像仓库,提供给企业内部员工使用。

Kubernetes 是容器和集群管理的标准。YAML 文件规定了组成一个应用所需的容器和其他资源。Kubernetes 提供了调度、伸缩、服务发现、健康检查、密文管理和配置管理等功能。

节点 是集群内的一个计算资源,节点可以是裸金属服务器或虚拟机。根据节点的角色不同,我们把节点分为三类:etcd 节点controlplane 节点worker 节点,下文会讲解三种节点的功能。一个 Kubernetes 集群至少要有一个 etcd 节点、一个 controlplane 节点 和 一个 worker 节点。

etcd 节点 的主要功能是数据存储,它负责存储 Rancher Server 的数据和集群状态。 Kubernetes 集群的状态保存在 中,etcd 节点运行 etcd 数据库。etcd 数据库组件是一个分布式的键值对存储系统,用于存储 Kubernetes 的集群数据,例如集群协作相关和集群状态相关的数据。建议在多个节点上运行 etcd,保证在节点失效的情况下,可以获取到备份的集群数据。

etcd 更新集群状态前,需要集群中的所有节点通过 quorum 投票机制完成投票。假设集群中有 n 个节点,至少需要 n/2 + 1(向下取整) 个节点同意,才被视为多数集群同意更新集群状态。例如一个集群中有 3 个 etcd 节点,quorum 投票机制要求至少两个节点同意,才会更新集群状态。

集群应该含有足够多健康的 etcd 节点,这样才可以形成一个 quorum。对含有奇数个节点的集群而言,每新增一个节点,就会增加通过 quorum 投票机制所需节点的数量。

Controlplane 节点上运行的工作负载包括:Kubernetes API server、scheduler 和 controller mananger。这些节点负载执行日常任务,从而确保您的集群状态和您的集群配置相匹配。因为 etcd 节点保存了集群的全部数据,所以 Controlplane 节点是无状态的。虽然您可以在单个节点上运行 Controlplane,但是我们建议在两个或以上的节点上运行 Controlplane,以保证冗余性。另外,因为 Kubernetes 只要求每个节点至少要分配一个角色,所以一个节点可以既是 Controlplane 节点,又是 etcd 节点。

worker 节点运行以下应用:

  • Kubelet: 监控节点状态的 Agent,确保您的容器处于健康状态。

Worker 节点也运行存储和网络驱动;有必要时也会运行。Rancher 对 Worker 节点的数量没有限制,您可以按照实际需要创建多个 Worker 节点。

Helm 是安装 Rancher 高可用集群时会用到的工具。

如果您想了解更多关于 Service Account 和 Cluster Role Binding 的信息,请查阅。