---
title: Kubernetes 概念
---

本文解释了 Kubernetes 的相关概念，以便让你更好地了解 Rancher 的运行机制。本文仅对 Kubernetes 组件进行了简单的描述。如需了解更多详情，请参见 [Kubernetes 组件的官方文档](https://kubernetes.io/docs/concepts/overview/components/)。

## 关于 Docker

Docker 是容器打包和运行时系统的标准。开发者在 Dockerfiles 中构建容器镜像，并在 Docker 镜像仓库中分发容器镜像。[Docker Hub](https://hub.docker.com) 是市面上主流的公有镜像仓库。许多企业还创建私有 Docker 镜像仓库。Docker 主要用于管理单个节点上的容器。

:::note

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

:::

## 关于 Kubernetes

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

## Kubernetes 集群是什么

集群是可作为一个系统协同工作的一组计算机。

_Kubernetes 集群_ 是使用 [Kubernetes 容器编排系统](https://kubernetes.io/)来部署、运维和伸缩 Docker 容器的集群，让你的组织实现应用自动化运维。

## Kubernetes 集群中节点的角色

Kubernetes 集群中的每个计算资源称为一个 _节点_ 。节点可以是裸金属服务器或虚拟机。Kubernetes 将节点分为 _etcd_ 节点、_controlplane_ 节点和 _worker_ 节点。

一个 Kubernetes 集群至少包含一个 etcd 节点，一个 controlplane 节点和一个 worker 节点。

### etcd 节点

Rancher 在单节点和高可用安装中均使用 etcd 作为数据存储。在 Kubernetes 中，etcd 也是存储集群状态的节点的角色。

Kubernetes 集群的状态保存在 [etcd](https://kubernetes.io/docs/concepts/overview/components/#etcd) 中。etcd 节点运行 etcd 数据库。

etcd 数据库组件是一个分布式的键值对存储系统，用于存储所有 Kubernetes 的集群数据，例如集群协作和状态管理相关的数据。建议在多个节点上运行 etcd，以保证在发生故障时有可用的备份数据。

即使你可以仅在一个节点上运行 etcd，但 etcd 需要大多数节点（即 quorum）的同意才能更新集群状态。集群需要包含足够数量的健康 etcd 节点，以形成 quorum。假设集群中有 n 个节点，quorum 的数量则需要是 (n/2)+1。如果集群节点数量是奇数，每新增一个节点，都会增加 quorum 所需节点数。

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

### controlplane 节点

controlplane 节点上运行 Kubernetes API server、scheduler 和 Controller Manager。这些节点执行日常任务，以确保集群状态和你的配置一致。因为 etcd 节点保存了集群的全部数据，所以 controlplane 节点是无状态的。虽然你可以在单个节点上运行 controlplane，但是我们建议在两个或以上的节点上运行 controlplane，以保证冗余性。另外，一个节点可以既是 controlplane 节点，又是 etcd 节点。

### Worker 节点

每个 [worker 节点](https://kubernetes.io/docs/concepts/architecture/nodes/)都能运行：

- **Kubelets**：监控节点状态的 Agent，确保你的容器处于健康状态。
- **工作负载**：承载应用和其他 deployment 的容器和 Pod。

Worker 节点也运行存储和网络驱动，有必要时也会运行 Ingress Controller。你可以根据需要，创建尽可能多的 worker 节点来运行你的[工作负载](../pages-for-subheaders/workloads-and-pods.md)。

## 关于 Helm

在 Rancher 高可用安装的场景下，你可以使用 Helm 工具，把 Rancher 安装到 Kubernetes 集群上。

Helm 是 Kubernetes 的包管理工具。Helm Chart 为 Kubernetes YAML 清单文件提供了模板语法。通过 Helm，用户可以创建可配置的 deployment，而不仅仅只能使用静态文件。如果你需要创建自己的 deployment 商店应用，请参见 [https://helm.sh/](https://helm.sh) 上的文档。

有关 ServiceAccount 和 Cluster Role Binding 的更多信息，请参见 [Kubernetes 官方文档](https://kubernetes.io/docs/reference/access-authn-authz/rbac/)。
