配置高可用的 RKE Kubernetes 集群

本文介绍如何安装 Kubernetes 集群。该集群应专用于运行 Rancher Server。

配置高可用的 RKE Kubernetes 集群 - 图1备注

Rancher 可以运行在任何 Kubernetes 集群上,包括托管的 Kubernetes,例如 Amazon EKS。以下说明只是安装 Kubernetes 其中一种方式。

如果系统无法直接访问互联网,请参见离线环境:Kubernetes 安装

配置高可用的 RKE Kubernetes 集群 - 图2单节点安装提示:

在单节点 Kubernetes 集群中,Rancher Server 不具备高可用性,而高可用性对在生产环境中运行 Rancher 非常重要。但是,如果你想要短期内使用单节点节省资源,同时又保留高可用性迁移路径,把 Rancher 安装到单节点集群也是合适的。

要设置单节点 RKE 集群,在 cluster.yml 中配置一个节点。该节点需具备所有三个角色,分别是etcdcontrolplaneworker

在这两种单节点设置中,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 版本。

  1. nodes:
  2. - address: 165.227.114.63
  3. internal_address: 172.16.22.12
  4. user: ubuntu
  5. role: [controlplane, worker, etcd]
  6. - address: 165.227.116.167
  7. internal_address: 172.16.32.37
  8. user: ubuntu
  9. role: [controlplane, worker, etcd]
  10. - address: 165.227.127.226
  11. internal_address: 172.16.42.73
  12. user: ubuntu
  13. role: [controlplane, worker, etcd]
  14. services:
  15. etcd:
  16. snapshot: true
  17. creation: 6h
  18. retention: 24h
  19. # Required for external TLS termination with
  20. # ingress-nginx v0.22+
  21. ingress:
  22. provider: nginx
  23. options:
  24. use-forwarded-headers: "true"
  25. kubernetes_version: v1.25.6-rancher4-1

通用 RKE 节点选项

选项必填描述
address公共 DNS 或 IP 地址
user可以运行 docker 命令的用户
role分配给节点的 Kubernetes 角色列表
internal_address内部集群流量的私有 DNS 或 IP 地址
ssh_key_path用来验证节点的 SSH 私钥文件路径(默认值为 ~/.ssh/id_rsa

配置高可用的 RKE Kubernetes 集群 - 图3高级配置:

RKE 提供大量配置选项,用于针对你的环境进行自定义安装。

如需了解选项和功能的完整列表,请参见 RKE 官方文档

要为大规模 Rancher 安装优化 etcd 集群,请参见 etcd 设置指南

有关 Dockershim 支持的详情,请参见此页面

2. 运行 RKE

  1. rke up --config ./rancher-cluster.yml

完成后,结束行应该是:Finished build Kubernetes cluster succeeded

3. 测试集群

本节介绍如何设置工作区,以便你可以使用 kubectl 命令行工具与此集群进行交互。

如果你已安装 kubectl,你需要将 kubeconfig 文件放在 kubectl 可访问的位置。kubeconfig 文件包含使用 kubectl 访问集群所需的凭证。

你在运行 rke up 时,RKE 应该已经创建了一个名为 kube_config_cluster.ymlkubeconfig 文件。该文件具有 kubectlhelm的凭证。

配置高可用的 RKE Kubernetes 集群 - 图4备注

如果你的文件名不是 rancher-cluster.yml,kubeconfig 文件将命名为 kube_config_<FILE_NAME>.yml

将此文件移动到 $HOME/.kube/config。如果你使用多个 Kubernetes 集群,将 KUBECONFIG 环境变量设置为 kube_config_cluster.yml 的路径:

  1. export KUBECONFIG=$(pwd)/kube_config_cluster.yml

kubectl 测试你的连接性,并查看你的所有节点是否都处于 Ready 状态:

  1. kubectl get nodes
  2. NAME STATUS ROLES AGE VERSION
  3. 165.227.114.63 Ready controlplane,etcd,worker 11m v1.13.5
  4. 165.227.116.167 Ready controlplane,etcd,worker 11m v1.13.5
  5. 165.227.127.226 Ready controlplane,etcd,worker 11m v1.13.5

4. 检查集群 Pod 的健康状况

检查所有需要的 Pod 和容器是否健康。

  • Pod 处于 RunningCompleted 状态。
  • READY 表示运行 STATUSRunning 的 Pod 的所有容器(例如, 3/3)。
  • STATUSCompleted 的 Pod 是一次运行的 Job。这些 Pod READY 列的值应该为 0/1
  1. kubectl get pods --all-namespaces
  2. NAMESPACE NAME READY STATUS RESTARTS AGE
  3. ingress-nginx nginx-ingress-controller-tnsn4 1/1 Running 0 30s
  4. ingress-nginx nginx-ingress-controller-tw2ht 1/1 Running 0 30s
  5. ingress-nginx nginx-ingress-controller-v874b 1/1 Running 0 30s
  6. kube-system canal-jp4hz 3/3 Running 0 30s
  7. kube-system canal-z2hg8 3/3 Running 0 30s
  8. kube-system canal-z6kpw 3/3 Running 0 30s
  9. kube-system kube-dns-7588d5b5f5-sf4vh 3/3 Running 0 30s
  10. kube-system kube-dns-autoscaler-5db9bbb766-jz2k6 1/1 Running 0 30s
  11. kube-system metrics-server-97bc649d5-4rl2q 1/1 Running 0 30s
  12. kube-system rke-ingress-controller-deploy-job-bhzgm 0/1 Completed 0 30s
  13. kube-system rke-kubedns-addon-deploy-job-gl7t4 0/1 Completed 0 30s
  14. kube-system rke-metrics-addon-deploy-job-7ljkc 0/1 Completed 0 30s
  15. kube-system rke-network-plugin-deploy-job-6pbgj 0/1 Completed 0 30s

这表示你已成功安装了可运行 Rancher Server 的 Kubernetes 集群。

5. 保存你的文件

配置高可用的 RKE Kubernetes 集群 - 图5重要提示:

维护、排除问题和升级集群需要用到以下文件,请妥善保管这些文件:

将以下文件的副本保存在安全位置:

  • rancher-cluster.yml:RKE 集群配置文件。
  • kube_config_cluster.yml:集群的 Kubeconfig 文件。该文件包含可完全访问集群的凭证。
  • rancher-cluster.rkestateKubernetes 状态文件。此文件包括用于完全访问集群的凭证。

    Kubernetes 集群状态文件仅在 RKE 版本是 0.2.0 或更高版本时生成。

配置高可用的 RKE Kubernetes 集群 - 图6备注

后两个文件名中的 rancher-cluster 部分取决于你命名 RKE 集群配置文件的方式。

故障排除

参见故障排除页面。

后续操作

安装 Rancher