Merge pull request #2031 from sunilarjun/rke1-removal

RKE1 removal/updates - /getting-started pages
This commit is contained in:
Sunil Singh
2025-10-16 15:13:58 -07:00
committed by GitHub
46 changed files with 54 additions and 2428 deletions
@@ -1,47 +0,0 @@
---
title: Dockershim
---
Dockershim 是 Kubelet 和 Docker Daemon 之间的 CRI 兼容层。Kubernetes 1.20 版本宣布了[移除树内 Dockershim](https://kubernetes.io/blog/2020/12/02/dont-panic-kubernetes-and-docker/)。有关此移除的更多信息以及时间线,请参见 [Kubernetes Dockershim 弃用相关的常见问题](https://kubernetes.io/blog/2020/12/02/dockershim-faq/#when-will-dockershim-be-removed)。
RKE 集群现在支持外部 Dockershim,来让用户继续使用 Docker 作为 CRI 运行时。现在,我们通过使用 [Mirantis 和 Docker ](https://www.mirantis.com/blog/mirantis-to-take-over-support-of-kubernetes-dockershim-2/) 来确保 RKE 集群可以继续使用 Docker,从而实现上游开源社区的外部 Dockershim。
RKE2 和 K3s 集群使用嵌入的 containerd 作为容器运行时,因此不受影响。
要在 1.24 之前的 RKE 版本中启用外部 Dockershim,请配置以下选项:
```
enable_cri_dockerd: true
```
从 1.24 版本开始,以上默认为 true。
如果你想使用其他容器运行时,Rancher 也提供使用 Containerd 作为默认运行时的,以边缘为中心的 K3s,和以数据中心为中心的 RKE2 Kubernetes 发行版。然后,你就可以通过 Rancher 对导入的 RKE2 和 K3s Kubernetes 集群进行升级和管理。
## 常见问题
<br/>
Q:是否必须升级 Rancher 才能获得 Rancher 对上游外部 Dockershim 替换的支持?
A:对于 RKE,Dockershim `cri_dockerd` 替换的上游支持从 Kubernetes 1.21 开始。你需要使用支持 RKE 1.21 的 Rancher 版本。详情请参见我们的支持矩阵。
<br/>
Q:我目前的 RKE 使用 Kubernetes 1.23。如果上游最终在 1.24 中删除 Dockershim,会发生什么?
A:RKE 中带有 Kubernetes 的 Dockershim 版本将继续工作到 1.23。有关时间线的更多信息,请参见 [Kubernetes Dockershim 弃用相关的常见问题](https://kubernetes.io/blog/2020/12/02/dockershim-faq/#when-will-dockershim-be-removed)。从 1.24 开始,RKE 将默认启用 `cri_dockerd` 并在之后的版本中继续启用。
<br/>
Q: 如果我不想再依赖 Dockershim 或 cri_dockerd,我还有什么选择?
A: 你可以为 Kubernetes 使用不需要 Dockershim 支持的运行时,如 Containerd。RKE2 和 K3s 就是其中的两个选项。
<br/>
Q: 如果我目前使用 RKE1,但想切换到 RKE2,我可以怎样进行迁移?
A: 你可以构建一个新集群,然后将工作负载迁移到使用 Containerd 的新 RKE2 集群。Rancher 也在探索就地升级路径的可能性。
<br/>
@@ -1,23 +0,0 @@
---
title: 安装 Docker
---
在使用 Helm 在 RKE 集群节点上或使用 Docker 安装 Rancher Server 前,你需要在节点中先安装 Docker。RKE2 和 K3s 集群不要求使用 Docker。
Docker 有几个安装方法。一种方法是参见 [Docker 官方文档](https://docs.docker.com/install/)以了解如何在 Linux 上安装 Docker。不同 Linux 发行版的安装步骤可能有所不同。
另一种方式是使用 Rancher 的 Docker 安装脚本,该脚本可用于较新的 Docker 版本。 Rancher 为每个 Kubernetes 支持的上游 Docker 版本提供了安装脚本。
例如,此命令可用于在 SUSE Linux Enterprise 或 Ubuntu 等主要 Linux 发行版上安装 Docker :
```bash
curl https://releases.rancher.com/install-docker/<version-number>.sh | sh
```
请参阅 [Rancher 支持矩阵](https://www.suse.com/suse-rancher/support-matrix),使用匹配你的操作系统和 Rancher 版本并且经过验证的 Docker 版本。 尽管支持矩阵列出了经过验证的 Docker 版本直至补丁版本,但只有发行版的主要版本和次要版本与 Docker 安装脚本相关。
请注意,必须应用以下 sysctl 设置:
```bash
net.bridge.bridge-nf-call-iptables=1
```
@@ -1,6 +1,6 @@
---
title: 安装要求
description: 如果 Rancher 配置在 Docker 或 Kubernetes 中运行时,了解运行 Rancher Server 的每个节点的节点要求
description: Learn the node requirements for each node running Rancher server when you’re configuring Rancher to run either in a Kubernetes setup
---
本文描述了对需要安装 Rancher Server 的节点的软件、硬件和网络要求。Rancher Server 可以安装在单个节点或高可用的 Kubernetes 集群上。
@@ -27,7 +27,7 @@ Rancher 需要安装在支持的 Kubernetes 版本上。请查阅 [Rancher 支
所有支持的操作系统都使用 64-bit x86 架构。Rancher 兼容当前所有的主流 Linux 发行版。
[Rancher 支持矩阵](https://www.suse.com/suse-rancher/support-matrix/all-supported-versions)列出了每个 Rancher 版本测试过的操作系统和 Docker 版本。
The [Rancher support matrix](https://www.suse.com/suse-rancher/support-matrix/all-supported-versions) lists which OS versions were tested for each Rancher version.
运行 RKE 集群的节点需要安装 Docker。RKE2 或 K3s 集群不需要它。
@@ -41,7 +41,7 @@ Rancher 需要安装在支持的 Kubernetes 版本上。请查阅 [Rancher 支
### RKE2 要求
对于容器运行时,RKE2 附带了自己的 containerd。RKE2 安装不需要 Docker。
对于容器运行时,RKE2 附带了自己的 containerd.
如需了解 RKE2 通过了哪些操作系统版本的测试,请参见 [Rancher 支持矩阵](https://www.suse.com/suse-rancher/support-matrix/all-supported-versions)。
@@ -150,41 +150,13 @@ Rancher 的代码库不断发展,用例不断变化,Rancher 积累的经验
(*):大规模的部署需要你[遵循最佳实践](../../../reference-guides/best-practices/rancher-server/tuning-and-best-practices-for-rancher-at-scale.md)以获得足够的性能。
### RKE
下面的表格列出了[上游集群](../install-upgrade-on-a-kubernetes-cluster/install-upgrade-on-a-kubernetes-cluster.md)中每个节点最小的 CPU 和内存要求。
请注意,生产环境下的高可用安装最少需要 3 个节点。
| 部署规模 | 最大集群数量 | 最大节点数量 | vCPUs | 内存 |
|-----------------------------|----------------------------|-------------------------|-------|-------|
| 小 | 150 | 1500 | 4 | 16 GB |
| 中 | 300 | 3000 | 8 | 32 GB |
| 大 (*) | 500 | 5000 | 16 | 64 GB |
(*): 大规模的部署需要你[遵循最佳实践](../../../reference-guides/best-practices/rancher-server/tuning-and-best-practices-for-rancher-at-scale.md)以获得足够的性能。
有关 RKE 一般要求的更多详细信息,请参见 [RKE 文档](https://rke.docs.rancher.com/os)。
### Docker
下面的表格列出了[上游集群](../install-upgrade-on-a-kubernetes-cluster/install-upgrade-on-a-kubernetes-cluster.md)中每个节点最小的 CPU 和内存要求。
请注意,在 Docker 中安装 Rancher 仅适用于开发或测试目的。不建议在生产环境中使用。
| 部署规模 | 最大集群数量 | 最大节点数量 | vCPUs | 内存 |
|-----------------------------|----------------------------|-------------------------|-------|------|
| 小 | 5 | 50 | 1 | 4 GB |
| 中 | 15 | 200 | 2 | 8 GB |
## Ingress
安装 Rancher 的 Kubernetes 集群中的每个节点都应该运行一个 Ingress。
Ingress 需要部署为 DaemonSet 以确保负载均衡器能成功把流量转发到各个节点。
如果是 RKE,RKE2 和 K3s 安装,你不需要手动安装 Ingress,因为它是默认安装的。
如果是 RKE2 和 K3s 安装,你不需要手动安装 Ingress,因为它是默认安装的。
对于托管的 Kubernetes 集群(EKS、GKE、AKS),你需要设置 Ingress。
@@ -213,7 +185,3 @@ etcd 在集群中的性能决定了 Rancher 的性能。因此,为了获得最
### 端口要求
为了确保能正常运行,Rancher 需要在 Rancher 节点和下游 Kubernetes 集群节点上开放一些端口。不同集群类型的 Rancher 和下游集群的所有必要端口,请参见[端口要求](port-requirements.md)。
## Dockershim 支持
有关 Dockershim 支持的详情,请参见[此页面](dockershim.md)。
@@ -15,7 +15,7 @@ import PortsImportedHosted from '@site/src/components/PortsImportedHosted'
不同的 Rancher Server 架构有不同的端口要求。
Rancher 可以安装在任何 Kubernetes 集群上。如果你的 Rancher 安装在 K3s、RKE 或 RKE2 Kubernetes 集群上,请参考下面的标签页。对于其他 Kubernetes 发行版,请参见该发行版的文档,了解集群节点的端口要求。
Rancher 可以安装在任何 Kubernetes 集群上。如果你的 Rancher 安装在 K3s 或 RKE2 Kubernetes 集群上,请参考下面的标签页。对于其他 Kubernetes 发行版,请参见该发行版的文档,了解集群节点的端口要求。
:::note 注意事项:
@@ -66,54 +66,6 @@ K3s server 需要开放端口 6443 才能供节点访问。
</details>
### RKE 上 Rancher Server 节点的端口
<details>
<summary>单击展开</summary>
通常情况下,Rancher 安装在三个 RKE 节点上,这些节点都有 etcd、controlplane 和 worker 角色。
下表描述了 Rancher 节点之间流量的端口要求:
<figcaption>Rancher 节点的流量规则</figcaption>
| 协议 | 端口 | 描述 |
|-----|-----|----------------|
| TCP | 443 | Rancher Agents |
| TCP | 2379 | etcd 客户端请求 |
| TCP | 2380 | etcd 对等通信 |
| TCP | 6443 | Kubernetes apiserver |
| TCP | 8443 | NGINX Ingress 的验证 Webhook |
| UDP | 8472 | Canal/Flannel VXLAN 覆盖网络 |
| TCP | 9099 | Canal/Flannel livenessProbe/readinessProbe |
| TCP | 10250 | Metrics Server 与所有节点的通信 |
| TCP | 10254 | Ingress controller livenessProbe/readinessProbe |
下表描述了入站和出站流量的端口要求:
<figcaption>Rancher 节点的入站规则</figcaption>
| 协议 | 端口 | 源 | 描述 |
|-----|-----|----------------|---|
| TCP | 22 | RKE CLI | RKE 通过 SSH 配置节点 |
| TCP | 80 | 负载均衡器/反向代理 | 到 Rancher UI/API 的 HTTP 流量 |
| TCP | 443 | <ul><li>负载均衡器/反向代理</li><li>所有集群节点和其他 API/UI 客户端的 IP</li></ul> | 到 Rancher UI/API 的 HTTPS 流量 |
| TCP | 6443 | Kubernetes API 客户端 | 到 Kubernetes API 的 HTTPS 流量 |
<figcaption>Rancher 节点的出站规则</figcaption>
| 协议 | 端口 | 目标 | 描述 |
|-----|-----|----------------|---|
| TCP | 443 | git.rancher.io | Rancher catalog |
| TCP | 22 | 使用 Node Driver 创建的任何节点 | Node Driver 通过 SSH 配置节点 |
| TCP | 2376 | 使用 Node Driver 创建的任何节点 | Node Driver 使用的 Docker daemon TLS 端口 |
| TCP | 6443 | 托管/导入的 Kubernetes API | Kubernetes API Server |
| TCP | 提供商依赖 | 托管集群中 Kubernetes API 端点的端口 | Kubernetes API |
</details>
### RKE2 上 Rancher Server 节点的端口
<details>
@@ -4,7 +4,7 @@ title: 离线 Helm CLI 安装
本文介绍如何使用 Helm CLI 在离线环境中安装 Rancher Server。离线环境可以是 Rancher Server 离线安装、防火墙后面或代理后面。
Rancher 安装在 RKE Kubernetes 集群、K3s Kubernetes 集群,或单个 Docker 容器上对应的安装步骤会有所不同。
Rancher 安装在 K3s Kubernetes 集群,或单个 Docker 容器上对应的安装步骤会有所不同。
如需了解各个安装方式的更多信息,请参见[本页](../../installation-and-upgrade.md)。
@@ -12,7 +12,7 @@ title: '3. 安装 Kubernetes(Docker 安装请跳过)'
Rancher 可以安装在任何 Kubernetes 集群上,包括托管的 Kubernetes。
在 RKE、RKE2 或 K3s 上离线安装 Kubernetes 集群的步骤如下所示:
在 RKE2 或 K3s 上离线安装 Kubernetes 集群的步骤如下所示:
<Tabs>
<TabItem value="K3s">
@@ -283,102 +283,9 @@ kubectl --kubeconfig ~/.kube/config/rke2.yaml get pods --all-namespaces
2. 使用相同的环境变量再次运行脚本。
3. 重启 RKE2 服务。
</TabItem>
<TabItem value="RKE">
我们将使用 Rancher Kubernetes Engine (RKE) 创建一个 Kubernetes 集群。在启动 Kubernetes 集群之前,你需要安装 RKE 并创建 RKE 配置文件。
### 1. 安装 RKE
参照 [RKE 官方文档](https://rancher.com/docs/rke/latest/en/installation/)的说明安装 RKE。
:::note
你可以在 [Rancher 支持矩阵](https://www.suse.com/suse-rancher/support-matrix/all-supported-versions/)中找到基于 Rancher 版本的 RKE 认证版本。
:::
### 2. 创建 RKE 配置文件
在可访问你 Linux 主机节点上的 22/TCP 端口和 6443/TCP 端口的系统上,使用以下示例创建一个名为 `rancher-cluster.yml` 的新文件。
该文件是 RKE 配置文件,用于配置你要部署 Rancher 的集群。
参考下方的 _RKE 选项_ 表格,修改代码示例中的参数。使用你创建的三个节点的 IP 地址或 DNS 名称。
:::tip
如需获取可用选项的详情,请参见 RKE [配置选项](https://rancher.com/docs/rke/latest/en/config-options/)。
:::
<figcaption>RKE 选项</figcaption>
| 选项 | 必填 | 描述 |
| ------------------ | -------------------- | --------------------------------------------------------------------------------------- |
| `address` | ✓ | 离线环境中节点的 DNS 或 IP 地址 |
| `user` | ✓ | 可运行 Docker 命令的用户 |
| `role` | ✓ | 分配给节点的 Kubernetes 角色列表 |
| `internal_address` | 可选<sup>1</sup> | 用于集群内部流量的 DNS 或 IP 地址 |
| `ssh_key_path` | | 用来验证节点的 SSH 私钥文件路径(默认值为 `~/.ssh/id_rsa`) |
> <sup>1</sup> 如果你想使用引用安全组或防火墙,某些服务(如 AWS EC2)要求设置 `internal_address`。
```yaml
nodes:
- address: 10.10.3.187 # 离线环境节点 IP
internal_address: 172.31.7.22 # 节点内网 IP
user: rancher
role: ['controlplane', 'etcd', 'worker']
ssh_key_path: /home/user/.ssh/id_rsa
- address: 10.10.3.254 # 离线环境节点 IP
internal_address: 172.31.13.132 # 节点内网 IP
user: rancher
role: ['controlplane', 'etcd', 'worker']
ssh_key_path: /home/user/.ssh/id_rsa
- address: 10.10.3.89 # 离线环境节点 IP
internal_address: 172.31.3.216 # 节点内网 IP
user: rancher
role: ['controlplane', 'etcd', 'worker']
ssh_key_path: /home/user/.ssh/id_rsa
private_registries:
- url: <REGISTRY.YOURDOMAIN.COM:PORT> # 私有镜像仓库 URL
user: rancher
password: '*********'
is_default: true
```
### 3. 运行 RKE
配置 `rancher-cluster.yml`后,启动你的 Kubernetes 集群:
```
rke up --config ./rancher-cluster.yml
```
### 4. 保存你的文件
:::note 重要提示:
维护、排除问题和升级集群需要用到以下文件,请妥善保管这些文件:
:::
将以下文件的副本保存在安全位置:
- `rancher-cluster.yml`:RKE 集群配置文件。
- `kube_config_cluster.yml`:集群的 [Kubeconfig 文件](https://rancher.com/docs/rke/latest/en/kubeconfig/)。该文件包含可完全访问集群的凭证。
- `rancher-cluster.rkestate`:[Kubernetes 集群状态文件](https://rancher.com/docs/rke/latest/en/installation/#kubernetes-cluster-state)。该文件包含集群的当前状态,包括 RKE 配置以及证书<br/>。<br/>_Kubernetes 集群状态文件仅在使用 RKE 0.2.0 或更高版本时创建。_
</TabItem>
</Tabs>
:::note
后两个文件名中的 `rancher-cluster` 部分取决于你命名 RKE 集群配置文件的方式。
:::
### 故障排除
参见[故障排除](../../install-upgrade-on-a-kubernetes-cluster/troubleshooting.md)页面。
@@ -4,7 +4,7 @@ title: '2. 安装 Kubernetes'
基础设施配置好后,你可以设置一个 Kubernetes 集群来安装 Rancher。
设置 RKE、RKE2 或 K3s 的步骤如下所示。
设置 RKE2 或 K3s 的步骤如下所示。
为方便起见,将代理的 IP 地址和端口导出到一个环境变量中,并在每个节点上为你当前的 shell 设置 HTTP_PROXY 变量:
@@ -92,152 +92,6 @@ kubectl cluster-info
kubectl get pods --all-namespaces
```
</TabItem>
<TabItem value="RKE">
首先,你需要在所有三个 Linux 节点上安装 Docker 并设置 HTTP 代理。因此,你可以在这三个节点上执行以下步骤。
接下来配置 apt 以在安装包时使用这个代理。如果你使用的不是 Ubuntu,请相应调整步骤。
```
cat <<'EOF' | sudo tee /etc/apt/apt.conf.d/proxy.conf > /dev/null
Acquire::http::Proxy "http://${proxy_host}/";
Acquire::https::Proxy "http://${proxy_host}/";
EOF
```
安装 Docker:
```
curl -sL https://releases.rancher.com/install-docker/19.03.sh | sh
```
然后,确保你的当前用户能够在没有 sudo 的情况下访问 Docker Daemon:
```
sudo usermod -aG docker YOUR_USERNAME
```
配置 Docker Daemon 使用代理来拉取镜像:
```
sudo mkdir -p /etc/systemd/system/docker.service.d
cat <<'EOF' | sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf > /dev/null
[Service]
Environment="HTTP_PROXY=http://${proxy_host}"
Environment="HTTPS_PROXY=http://${proxy_host}"
Environment="NO_PROXY=127.0.0.0/8,10.0.0.0/8,cattle-system.svc,172.16.0.0/12,192.168.0.0/16"
EOF
```
要应用配置,请重新启动 Docker Daemon:
```
sudo systemctl daemon-reload
sudo systemctl restart docker
```
#### 离线代理
你现在可以在配置的离线集群中配置主机驱动集群,以使用代理进行出站连接。
除了为代理服务器设置默认规则外,你还需要额外添加如下所示的规则,以从代理的 Rancher 环境中配置主机驱动集群。
根据你的设置配置文件路径,例如 `/etc/apt/apt.conf.d/proxy.conf`:
```
acl SSL_ports port 22
acl SSL_ports port 2376
acl Safe_ports port 22 # ssh
acl Safe_ports port 2376 # docker port
```
### 创建 RKE 集群
在能通过 SSH 访问 Linux 节点的主机上,你需要有几个命令行工具,来创建集群并与之交互:
* [RKE CLI binary](https://rancher.com/docs/rke/latest/en/installation/#download-the-rke-binary)
```
sudo curl -fsSL -o /usr/local/bin/rke https://github.com/rancher/rke/releases/download/v1.1.4/rke_linux-amd64
sudo chmod +x /usr/local/bin/rke
```
* [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/)
```
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
```
接下来,创建一个描述 RKE 集群的 YAML 文件。确保节点的 IP 地址和 SSH 用户名是正确的。有关集群 YAML 的详情,请参见 [RKE 官方文档](https://rancher.com/docs/rke/latest/en/example-yamls/)。
```yml
nodes:
- address: 10.0.1.200
user: ubuntu
role: [controlplane,worker,etcd]
- address: 10.0.1.201
user: ubuntu
role: [controlplane,worker,etcd]
- address: 10.0.1.202
user: ubuntu
role: [controlplane,worker,etcd]
services:
etcd:
backup_config:
interval_hours: 12
retention: 6
```
之后,你可以通过运行以下命令来创建 Kubernetes 集群:
```
rke up --config rancher-cluster.yaml
```
RKE 会创建一个名为 `rancher-cluster.rkestate` 的状态文件。如果你需要更新或修改集群配置,或使用备份恢复集群,则需要使用该文件。RKE 还会创建一个 `kube_config_cluster.yaml` 文件,你可以使用该文件在本地使用 kubectl 或 Helm 等工具连接到远端的 Kubernetes 集群。请将这些文件保存在安全的位置,例如版本控制系统中。
如需查看集群,请运行以下命令:
```
export KUBECONFIG=kube_config_cluster.yaml
kubectl cluster-info
kubectl get pods --all-namespaces
```
你也可以验证你的外部负载均衡器是否工作,DNS 条目是否设置正确。如果你向其中之一发送请求,你会收到来自 Ingress Controller 的 HTTP 404 响应:
```
$ curl 10.0.1.100
default backend - 404
$ curl rancher.example.com
default backend - 404
```
### 保存你的文件
:::note 重要提示:
维护、排除问题和升级集群需要用到以下文件,请妥善保管这些文件:
:::
将以下文件的副本保存在安全位置:
- `rancher-cluster.yml`:RKE 集群配置文件。
- `kube_config_cluster.yml`:集群的 [Kubeconfig 文件](https://rancher.com/docs/rke/latest/en/kubeconfig/)。该文件包含可完全访问集群的凭证。
- `rancher-cluster.rkestate`:[Kubernetes 集群状态文件](https://rancher.com/docs/rke/latest/en/installation/#kubernetes-cluster-state)。此文件包含集群的当前状态,包括 RKE 配置和证书。
:::note
后两个文件名中的 `rancher-cluster` 部分取决于你命名 RKE 集群配置文件的方式。
:::
</TabItem>
</Tabs>
@@ -2,7 +2,7 @@
title: 3. 安装 Rancher
---
在前文的操作后,你已经有了一个运行的 RKE 集群,现在可以在其中安装 Rancher 了。出于安全考虑,所有到 Rancher 的流量都必须使用 TLS 加密。在本教程中,你将使用 [cert-manager](https://cert-manager.io/)自动颁发自签名证书。在实际使用情况下,你可使用 Let's Encrypt 或自己的证书。
在前文的操作后,你已经有了一个运行的 RKE2/K3s 集群,现在可以在其中安装 Rancher 了。出于安全考虑,所有到 Rancher 的流量都必须使用 TLS 加密。在本教程中,你将使用 [cert-manager](https://cert-manager.io/)自动颁发自签名证书。在实际使用情况下,你可使用 Let's Encrypt 或自己的证书。
## 安装 Helm CLI
@@ -4,7 +4,7 @@ title: '1. 配置基础设施'
在本节中,你将为 Rancher Management Server 配置底层基础设施,并使其通过 HTTP 代理访问互联网。
如需在高可用 RKE 集群中安装 Rancher Management Server,我们建议配置以下基础设施:
如需在高可用 RKE2/K3s 集群中安装 Rancher Management Server,我们建议配置以下基础设施:
- **3 个 Linux 节点**:可以是你的云提供商(例如 Amazon EC2,GCE 或 vSphere)中的虚拟机。
- **1 个负载均衡器**:用于将前端流量转发到这三个节点中。
@@ -14,7 +14,7 @@ title: '1. 配置基础设施'
## 为什么使用三个节点?
在 RKE 集群中,Rancher Server 的数据存储在 etcd 中。而这个 etcd 数据库在这三个节点上运行。
在 RKE2/K3s 集群中,Rancher Server 的数据存储在 etcd 中。而这个 etcd 数据库在这三个节点上运行。
为了选举出大多数 etcd 节点认可的 etcd 集群 leader,etcd 数据库需要奇数个节点。如果 etcd 数据库无法选出 leader,etcd 可能会出现[脑裂(split brain)](https://www.quora.com/What-is-split-brain-in-distributed-systems)的问题,此时你需要使用备份恢复集群。如果三个 etcd 节点之一发生故障,其余两个节点可以选择一个 leader,因为它们是 etcd 节点总数的大多数部分。
@@ -30,7 +30,7 @@ title: '1. 配置基础设施'
你还需要设置一个负载均衡器,来将流量重定向到两个节点上的 Rancher 副本。配置后,当单个节点不可用时,继续保障与 Rancher Management Server 的通信。
在后续步骤中配置 Kubernetes 时,RKE 工具会部署一个 NGINX Ingress Controller。该 Controller 将侦听 worker 节点的 80 端口和 443 端口,以响应发送给特定主机名的流量。
在后续步骤中配置 Kubernetes 时,RKE2/K3s 工具会部署一个 NGINX Ingress Controller。该 Controller 将侦听 worker 节点的 80 端口和 443 端口,以响应发送给特定主机名的流量。
在安装 Rancher 后(也是在后续步骤中),Rancher 系统将创建一个 Ingress 资源。该 Ingress 通知 NGINX Ingress Controller 监听发往 Rancher 主机名的流量。NGINX Ingress Controller 在收到发往 Rancher 主机名的流量时,会将其转发到集群中正在运行的 Rancher Server Pod。
@@ -1,195 +0,0 @@
---
title: 配置高可用的 RKE Kubernetes 集群
---
<EOLRKE1Warning />
本文介绍如何安装 Kubernetes 集群。该集群应专用于运行 Rancher Server。
:::note
Rancher 可以运行在任何 Kubernetes 集群上,包括托管的 Kubernetes,例如 Amazon EKS。以下说明只是安装 Kubernetes 其中一种方式。
:::
如果系统无法直接访问互联网,请参见[离线环境:Kubernetes 安装](../../../getting-started/installation-and-upgrade/other-installation-methods/air-gapped-helm-cli-install/air-gapped-helm-cli-install.md)。
:::tip 单节点安装提示:
在单节点 Kubernetes 集群中,Rancher Server 不具备高可用性,而高可用性对在生产环境中运行 Rancher 非常重要。但是,如果你想要短期内使用单节点节省资源,同时又保留高可用性迁移路径,把 Rancher 安装到单节点集群也是合适的。
要设置单节点 RKE 集群,在 `cluster.yml` 中配置一个节点。该节点需具备所有三个角色,分别是`etcd`,`controlplane`和`worker`。
在这两种单节点设置中,Rancher 可以与 Helm 一起安装在 Kubernetes 集群上,安装方法与安装到其他集群上一样。
:::
## 安装 Kubernetes
### 所需的 CLI 工具
安装 Kubernetes 命令行工具 [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl)。
安装 [RKE](https://rancher.com/docs/rke/latest/en/installation/)(Rancher Kubernetes Engine,是一个 Kubernetes 发行版和命令行工具)。
### 1. 创建集群配置文件
在这部分,你将创建一个名为 `rancher-cluster.yml`的 Kubernetes 集群配置文件。在后续使用 RKE 命令设置集群的步骤中,此文件会用于在节点上安装 Kubernetes。
使用下面的示例作为指南,创建 `rancher-cluster.yml` 文件。将 `nodes` 列表中的 IP 地址替换为你创建的 3 个节点的 IP 地址或 DNS 名称。
如果你的节点有公共地址和内部地址,建议设置 `internal_address:` 以便 Kubernetes 使用它实现集群内部通信。如果你想使用引用安全组或防火墙,某些服务(如 AWS EC2)要求设置 `internal_address:`。
RKE 需要通过 SSH 连接到每个节点,它会在 `~/.ssh/id_rsa`的默认位置查找私钥。如果某个节点的私钥不在默认位置中,你还需要为该节点配置 `ssh_key_path` 选项。
在选择 Kubernetes 版本时,请务必先查阅[支持矩阵](https://rancher.com/support-matrix/),以找出已针对你的 Rancher 版本验证的最新 Kubernetes 版本。
```yaml
nodes:
- address: 165.227.114.63
internal_address: 172.16.22.12
user: ubuntu
role: [controlplane, worker, etcd]
- address: 165.227.116.167
internal_address: 172.16.32.37
user: ubuntu
role: [controlplane, worker, etcd]
- address: 165.227.127.226
internal_address: 172.16.42.73
user: ubuntu
role: [controlplane, worker, etcd]
services:
etcd:
snapshot: true
creation: 6h
retention: 24h
# Required for external TLS termination with
# ingress-nginx v0.22+
ingress:
provider: nginx
options:
use-forwarded-headers: "true"
kubernetes_version: v1.25.6-rancher4-1
```
<figcaption>通用 RKE 节点选项</figcaption>
| 选项 | 必填 | 描述 |
| ------------------ | -------- | -------------------------------------------------------------------------------------- |
| `address` | 是 | 公共 DNS 或 IP 地址 |
| `user` | 是 | 可以运行 docker 命令的用户 |
| `role` | 是 | 分配给节点的 Kubernetes 角色列表 |
| `internal_address` | 否 | 内部集群流量的私有 DNS 或 IP 地址 |
| `ssh_key_path` | 否 | 用来验证节点的 SSH 私钥文件路径(默认值为 `~/.ssh/id_rsa`) |
:::note 高级配置:
RKE 提供大量配置选项,用于针对你的环境进行自定义安装。
如需了解选项和功能的完整列表,请参见 [RKE 官方文档](https://rancher.com/docs/rke/latest/en/config-options/)。
要为大规模 Rancher 安装优化 etcd 集群,请参见 [etcd 设置指南](../../advanced-user-guides/tune-etcd-for-large-installs.md)。
有关 Dockershim 支持的详情,请参见[此页面](../../../getting-started/installation-and-upgrade/installation-requirements/dockershim.md)。
:::
### 2. 运行 RKE
```
rke up --config ./rancher-cluster.yml
```
完成后,结束行应该是:`Finished build Kubernetes cluster succeeded`。
### 3. 测试集群
本节介绍如何设置工作区,以便你可以使用 `kubectl` 命令行工具与此集群进行交互。
如果你已安装 `kubectl`,你需要将 `kubeconfig` 文件放在 `kubectl` 可访问的位置。`kubeconfig` 文件包含使用 `kubectl` 访问集群所需的凭证。
你在运行 `rke up` 时,RKE 应该已经创建了一个名为 `kube_config_cluster.yml`的 `kubeconfig` 文件。该文件具有 `kubectl` 和 `helm`的凭证。
:::note
如果你的文件名不是 `rancher-cluster.yml`,kubeconfig 文件将命名为 `kube_config_<FILE_NAME>.yml`。
:::
将此文件移动到 `$HOME/.kube/config`。如果你使用多个 Kubernetes 集群,将 `KUBECONFIG` 环境变量设置为 `kube_config_cluster.yml` 的路径:
```
export KUBECONFIG=$(pwd)/kube_config_cluster.yml
```
用 `kubectl` 测试你的连接性,并查看你的所有节点是否都处于 `Ready` 状态:
```
kubectl get nodes
NAME STATUS ROLES AGE VERSION
165.227.114.63 Ready controlplane,etcd,worker 11m v1.13.5
165.227.116.167 Ready controlplane,etcd,worker 11m v1.13.5
165.227.127.226 Ready controlplane,etcd,worker 11m v1.13.5
```
### 4. 检查集群 Pod 的健康状况
检查所有需要的 Pod 和容器是否健康。
- Pod 处于 `Running` 或 `Completed` 状态。
- `READY` 表示运行 `STATUS` 为 `Running` 的 Pod 的所有容器(例如, `3/3`)。
- `STATUS` 为 `Completed` 的 Pod 是一次运行的 Job。这些 Pod `READY` 列的值应该为 `0/1`。
```
kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
ingress-nginx nginx-ingress-controller-tnsn4 1/1 Running 0 30s
ingress-nginx nginx-ingress-controller-tw2ht 1/1 Running 0 30s
ingress-nginx nginx-ingress-controller-v874b 1/1 Running 0 30s
kube-system canal-jp4hz 3/3 Running 0 30s
kube-system canal-z2hg8 3/3 Running 0 30s
kube-system canal-z6kpw 3/3 Running 0 30s
kube-system kube-dns-7588d5b5f5-sf4vh 3/3 Running 0 30s
kube-system kube-dns-autoscaler-5db9bbb766-jz2k6 1/1 Running 0 30s
kube-system metrics-server-97bc649d5-4rl2q 1/1 Running 0 30s
kube-system rke-ingress-controller-deploy-job-bhzgm 0/1 Completed 0 30s
kube-system rke-kubedns-addon-deploy-job-gl7t4 0/1 Completed 0 30s
kube-system rke-metrics-addon-deploy-job-7ljkc 0/1 Completed 0 30s
kube-system rke-network-plugin-deploy-job-6pbgj 0/1 Completed 0 30s
```
这表示你已成功安装了可运行 Rancher Server 的 Kubernetes 集群。
### 5. 保存你的文件
:::note 重要提示:
维护、排除问题和升级集群需要用到以下文件,请妥善保管这些文件:
:::
将以下文件的副本保存在安全位置:
- `rancher-cluster.yml`:RKE 集群配置文件。
- `kube_config_cluster.yml`:集群的 [Kubeconfig 文件](https://rancher.com/docs/rke/latest/en/kubeconfig/)。该文件包含可完全访问集群的凭证。
- `rancher-cluster.rkestate`:[Kubernetes 状态文件](https://rancher.com/docs/rke/latest/en/installation/#kubernetes-cluster-state)。此文件包括用于完全访问集群的凭证。<br/><br/>_Kubernetes 集群状态文件仅在 RKE 版本是 0.2.0 或更高版本时生成。_
:::note
后两个文件名中的 `rancher-cluster` 部分取决于你命名 RKE 集群配置文件的方式。
:::
### 故障排除
参见[故障排除](../../../getting-started/installation-and-upgrade/install-upgrade-on-a-kubernetes-cluster/troubleshooting.md)页面。
### 后续操作
[安装 Rancher](../../../getting-started/installation-and-upgrade/install-upgrade-on-a-kubernetes-cluster/install-upgrade-on-a-kubernetes-cluster.md)
@@ -34,7 +34,7 @@ title: EC2 节点模板配置
请参考[使用主机驱动时的 Amazon EC2 安全组](../../../../getting-started/installation-and-upgrade/installation-requirements/port-requirements.md#rancher-aws-ec2-安全组),了解 `rancher-nodes` 安全组中创建的规则。
如果你自行为 EC2 实例提供安全组,Rancher 不会对其进行修改。因此,你需要让你的安全组允许 [Rancher 配置实例所需的端口](../../../../getting-started/installation-and-upgrade/installation-requirements/port-requirements.md#rke-上-rancher-server-节点的端口)。有关使用安全组控制 EC2 实例的入站和出站流量的更多信息,请参阅[这里](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#WorkingWithSecurityGroups)。
如果你自行为 EC2 实例提供安全组,Rancher 不会对其进行修改。因此,你需要让你的安全组允许 [Rancher 配置实例所需的端口](../../../../getting-started/installation-and-upgrade/installation-requirements/port-requirements.md#rke2-上-rancher-server-节点的端口)。有关使用安全组控制 EC2 实例的入站和出站流量的更多信息,请参阅[这里](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#WorkingWithSecurityGroups)。
## 实例选项