配置高可用的 RKE Kubernetes 集群
Rancher Kubernetes Engine (RKE/RKE1) will reach end of life on July 31, 2025. Rancher 2.12.0 and later will no longer support provisioning or managing downstream RKE1 clusters. We recommend replatforming RKE1 clusters to RKE2 to ensure continued support and security updates. Learn more about the transition here.
本文介绍如何安装 Kubernetes 集群。该集群应专用于运行 Rancher Server。
Rancher 可以运行在任何 Kubernetes 集群上,包括托管的 Kubernetes,例如 Amazon EKS。以下说明只是安装 Kubernetes 其中一种方式。
如果系统无法直接访问互联网,请参见离线环境:Kubernetes 安装。
在单节点 Kubernetes 集群中,Rancher Server 不具备高可用性,而高可用性对在生产环境中运行 Rancher 非常重要。但是,如果你想要短期内使用单节点节省资源,同时又保留高可用性迁移路径,把 Rancher 安装到单节点集群也是合适的。
要设置单节点 RKE 集群,在 cluster.yml
中配置一个节点。该节点需具备所有三个角色,分别是etcd
,controlplane
和worker
。
在这两种单节点设置中,Rancher 可以与 Helm 一起安装在 Kubernetes 集群上,安装方法与安装到其他集群上一样。
安装 Kubernetes
所需的 CLI 工具
安装 Kubernetes 命令行工具 kubectl。
安装 RKE(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 版本时,请务必先查阅支持矩阵,以找出已针对你的 Rancher 版本验证的最新 Kubernetes 版本。
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.24.13-rancher2-1
选项 | 必填 | 描述 |
---|---|---|
address | 是 | 公共 DNS 或 IP 地址 |
user | 是 | 可以运行 docker 命令的用户 |
role | 是 | 分配给节点的 Kubernetes 角色列表 |
internal_address | 否 | 内部集群流量的私有 DNS 或 IP 地址 |
ssh_key_path | 否 | 用来验证节点的 SSH 私钥文件路径(默认值为 ~/.ssh/id_rsa ) |
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
的凭证。
如果你的文件名不是 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。这些 PodREADY
列的值应该为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. 保存你的文件
维护、排除问题和升级集群需要用到以下文件,请妥善保管这些文件:
将以下文件的副本保存在安全位置:
rancher-cluster.yml
:RKE 集群配置文件。kube_config_cluster.yml
:集群的 Kubeconfig 文件。该文件包含可完全访问集群的凭证。rancher-cluster.rkestate
:Kubernetes 状态文件。此文件包括用于完全访问集群的凭证。
Kubernetes 集群状态文件仅在 RKE 版本是 0.2.0 或更高版本时生成。
后两个文件名中的 rancher-cluster
部分取决于你命名 RKE 集群配置文件的方式。
故障排除
参见故障排除页面。