使用 RKE 安装 Kubernetes
本节描述了如何根据我们的 Rancher Server 环境的最佳实践来安装 Kubernetes 集群。该集群应专用于运行 Rancher Server。
对于 v2.4 之前的 Rancher,Rancher 应该安装在 RKE(Rancher Kubernetes Engine)Kubernetes 集群上。RKE 是经过 CNCF 认证的 Kubernetes 发行版,并且全部组件完全在 Docker 容器内运行。
从 Rancher v2.4 开始,Rancher Server 可以安装在 RKE Kubernetes 集群或 K3s Kubernetes 集群上。K3s 也是 Rancher 发布的经过完全认证的 Kubernetes 发行版,但比 RKE 更新。我们建议在 K3s 上安装 Rancher,因为 K3s 易于使用且更轻量,全部组件都打包在了一个二进制文件里。并且这个二进制文件小于 100 MB。注意:如果在 RKE 集群上安装了 Rancher 之后,目前没有办法将这个高可用迁移到 K3s 集群上。
对于无法直接访问 Internet 的系统,请参阅 Rancher 离线安装指南。
单节点 Kubernetes 集群安装提示:
在单节点 Kubernetes 集群中,Rancher Server 不具有高可用性,但高可用性这对于在生产环境中运行 Rancher 至关重要。如果要在短期内通过使用单个节点来节省资源,同时保留高可用性迁移路径,则在单节点 Kubernetes 集群上安装 Rancher 可能会很有用。
要创建单节点 RKE 集群,只需在
cluster.yml
中配置一个节点。这个节点应该具有所有三个角色:etcd
、controlplane
和worker
。要创建单节点 K3s 集群,只需在一个节点上运行安装命令即可,并不需要像高可用集群一样在两个节点上安装。
配置完单节点的 Kubernetes 集群后,就可以像在其他高可用集群上安装一样,使用 Helm 安装 Rancher。
#
安装 Kubernetes创建 Kubernetes 集群的步骤,根据是使用 RKE 还是使用 K3s 而不同。请选择一种适合您的方式安装 Kubernetes。
#
安装 K3s 集群#
1、安装 Kubernetes 并配置 K3s Server运行启动 K3s Kubernetes API Server 的命令时,您需要传入先前设置的外部数据库参数。
连接到您准备运行 Rancher Server 的 Linux 节点之一。
在 Linux 节点上,运行以下命令以启动 K3s Server 并将其连接到外部数据库:
注意:您也可以通过环境变量
$K3S_DATASTORE_ENDPOINT
来配置数据库端点。
提示
国内用户,可以使用以下方法加速安装:
- 在您的另外一台 Linux 节点上执行同样的操作。
#
2、确认 K3s 是否创建成功要确认已成功设置 K3s,请在任一 K3s Server 节点上运行以下命令:
然后,您应该看到两个具有master
角色的节点:
然后测试集群容器的运行状况:
结果: 您已经成功设置了 K3s Kubernetes 集群。
#
3、保存并使用 kubeconfig 文件在每个 Rancher Server 节点上安装 K3s 时,会在节点上/etc/rancher/k3s/k3s.yaml
位置创建一个kubeconfig
文件。该文件包含用于完全访问集群的凭据,您应该将此文件保存在安全的位置。
要使用此kubeconfig
文件,
- 安装 Kubernetes 命令行工具kubectl。
- 将文件
/etc/rancher/k3s/k3s.yaml
复制并保存到本地计算机上的~/.kube/config
文件中。 - 在这个
kubeconfig
文件中,server
参数为localhost
。您需要手动更改这个地址为负载均衡器的 DNS,并且指定端口 6443。(Kubernetes API Server 的端口为 6443,Rancher Server 的端口为 80 和 443。)以下是一个示例k3s.yaml
:
注意
如果需要在本地通过 kubectl
访问这个 K3s 集群,请确保在您的负载均衡器中配置将6443
端口的流量也转发到这两个节点上。
结果: 您现在可以使用kubectl
来管理您的 K3s 集群。如果您有多个 kubeconfig 文件,可以在使用kubectl
时通过传递文件路径来指定要使用的 kubeconfig 文件:
有关kubeconfig
文件的更多信息,请参考 K3s 集群访问或官方 Kubernetes 文档中关于使用kubeconfig
文件访问集群的部分。
#
4、检查集群 Pod 的运行状况既然已经设置了kubeconfig
文件,就可以使用kubectl
从您的本地计算机访问集群了。
检查所有需要的 Pod 和容器是否状况良好:
结果: 您已确认可以使用kubectl
访问集群,并且 K3s 集群正在正确运行。现在,可以在集群上安装 Rancher Server 了。
#
安装 RKE 集群#
1、安装需要的 CLI 工具安装 Kubernetes 命令行工具 kubectl。
另外,安装RKE,Rancher Kubernetes Engine,一种 Kubernetes 分发版和命令行工具。
请按照RKE 文档中的说明安装 RKE。
提示
国内用户,可以导航到 https://mirror.rancher.cn 下载所需资源
#
2、创建 RKE 配置文件在本节中,您将创建一个名为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
选项。
选项 | 必填 | 描述 |
---|---|---|
address | 是 | 公用 DNS 或 IP 地址 |
user | 是 | 可以运行 docker 命令的用户 |
role | 是 | 分配给节点的 Kubernetes 角色列表 |
internal_address | 是 | 内部集群流量的专用 DNS 或 IP 地址 |
ssh_key_path | 否 | 用于对节点进行身份验证的 SSH 私钥的路径(默认为~/.ssh/id_rsa ) |
高级配置: RKE 有许多配置选项可用于在您的特定环境中进行自定义安装。
请参阅RKE 文档来了解 RKE 的选项和功能的完整列表。
要为大规模 Rancher 安装 etcd 集群,请参阅etcd 设置指南。
#
3、运行 RKE完成后,它应该以这样一行结束: Finished building Kubernetes cluster successfully
.
#
4、测试集群本节介绍如何在您的工作区进行设置,以便您可以在本地使用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
的路径:
使用kubectl
测试您的连通性,并查看您的所有节点是否都处于Ready
状态:
#
5、检查集群 Pod 的运行状况检查所有必需的 Pod 和容器是否状况良好,然后可以继续进行。
- Pod 是
Running
或Completed
状态。 STATUS
为Running
的 Pod,READY
应该显示所有容器正在运行 (例如,3/3
)。STATUS
为Completed
的 Pod 是一次运行的作业。对于这些 Pod,READY
应为0/1
。
这确认您已经成功安装了可以运行 Rancher Server 的 Kubernetes 集群。
#
6、保存文件重要
需要用以下文件来进行集群维护,集群升级和故障排查。
将以下文件的副本保存在安全的位置:
rancher-cluster.yml
: RKE 集群配置文件。kube_config_cluster.yml
: 集群的Kubeconfig 文件,此文件包含用于访问集群的凭据。rancher-cluster.rkestate
: Kubernetes 集群状态文件,此文件包含用于完全访问集群的凭据。Kubernetes 集群状态文件仅在使用 RKE v0.2.0 或更高版本时创建。
注意: 后两个文件名的“rancher-cluster”部分取决于您如何命名 RKE 集群的配置文件。
#
遇到问题或错误?请参阅故障排查页面。