Skip to main content

Kubernetes 概念

本文对 Kubernetes 相关概念和术语进行了解释,帮助您更好地了解 Rancher 的运行机制。如需了解更多细节,请查看Kubernetes 官方文档

关于 Docker#

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

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

说明: 因为 Kubernetes 已经成为了容器管理的主流工具,所以从 Rancher 2.x 版本开始,我们不再支持 Docker Swarm。如果您仍有使用 Docker 管理容器的需求,您可以安装 Rancher 1.6 进行操作。

关于 Kubernetes#

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

Kubernetes 集群是什么#

Kubernetes 集群 是由多个计算机(可以是物理机、云主机或虚拟机)组成的一个独立系统,通过 Kubernetes 容器管理系统,实现部署、运维和伸缩 Docker 容器等功能,它允许您的组织对应用进行自动化运维。

Kubernetes 集群中的节点角色#

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

etcd 节点#

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

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

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

一般情况下,集群中只要配置三个 etcd 节点就能满足小型集群的需求,五个 etcd 节点能满足大型集群的需求。

Controlplane 节点#

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

Worker 节点#

worker 节点运行以下应用:

  • Kubelet: 监控节点状态的 Agent,确保您的容器处于健康状态。
  • 工作负载: 承载您的应用和其他类型的部署的容器和 Pod。

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

关于 Helm#

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

Helm 是 Kubernetes 的软件包管理工具。Helm chart 为 Kubernetes YAML manifest 文件提供了模板语法。通过 Helm,可以创建可配置的 Deployment YAML,而不是只能用静态的 YAML。如果您想了解更多关于如何创建自己的应用商店应用(catalog),请查阅Helm 官方网站

如果您想了解更多关于 Service Account 和 Cluster Role Binding 的信息,请查阅Kubernetes 官方文档

Last updated on by yzeng25