对于 v2.4 之前的 Rancher,Rancher 应该安装在 (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 集群上。

    Rancher Server 只能在使用 RKE 或 K3s 安装的 Kubernetes 集群中运行。不支持在托管的 Kubernetes 集群(例如 EKS)上使用 Rancher。

    对于无法直接访问 Internet 的系统,请参阅 Rancher 离线安装指南

    安装 Kubernetes

    创建 Kubernetes 集群的步骤,根据是使用 RKE 还是使用 K3s 而不同。请选择一种适合您的方式安装 Kubernetes。

    运行启动 K3s Kubernetes API Server 的命令时,您需要传入先前设置的外部数据库参数。

    1. 连接到您准备运行 Rancher Server 的 Linux 节点之一。

    2. 在 Linux 节点上,运行以下命令以启动 K3s Server 并将其连接到外部数据库:

      注意:您也可以通过环境变量$K3S_DATASTORE_ENDPOINT来配置数据库端点。

    :::note 提示 国内用户,可以使用以下方法加速安装:

    1. curl -sfL https://docs.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - server \
    2. --datastore-endpoint="mysql://username:password@tcp(hostname:3306)/database-name"

    :::

    1. 在您的另外一台 Linux 节点上执行同样的操作。

    2、确认 K3s 是否创建成功

    要确认已成功设置 K3s,请在任一 K3s Server 节点上运行以下命令:

    1. sudo k3s kubectl get nodes
    1. ubuntu@ip-172-31-60-194:~$ sudo k3s kubectl get nodes
    2. ip-172-31-60-194 Ready master 44m v1.17.2+k3s1
    3. ip-172-31-63-88 Ready master 6m8s v1.17.2+k3s1

    然后测试集群容器的运行状况:

    结果: 您已经成功设置了 K3s Kubernetes 集群。

    3、保存并使用 kubeconfig 文件

    在每个 Rancher Server 节点上安装 K3s 时,会在节点上/etc/rancher/k3s/k3s.yaml位置创建一个kubeconfig文件。该文件包含用于完全访问集群的凭据,您应该将此文件保存在安全的位置。

    要使用此kubeconfig文件,

    1. 安装 Kubernetes 命令行工具。
    2. 将文件/etc/rancher/k3s/k3s.yaml复制并保存到本地计算机上的~/.kube/config文件中。
    3. 在这个 kubeconfig 文件中,server参数为 localhost。您需要手动更改这个地址为负载均衡器的 DNS,并且指定端口 6443。(Kubernetes API Server 的端口为 6443,Rancher Server 的端口为 80 和 443。)以下是一个示例k3s.yaml

    :::important 注意 如果需要在本地通过 kubectl 访问这个 K3s 集群,请确保在您的负载均衡器中配置将6443端口的流量也转发到这两个节点上。 :::

    1. apiVersion: v1
    2. clusters:
    3. - cluster:
    4. certificate-authority-data: [CERTIFICATE-DATA]
    5. server: [LOAD-BALANCER-DNS]:6443 # 编辑此行
    6. name: default
    7. contexts:
    8. - context:
    9. cluster: default
    10. user: default
    11. name: default
    12. current-context: default
    13. preferences: {}
    14. users:
    15. - name: default
    16. password: [PASSWORD]
    17. username: admin

    结果: 您现在可以使用kubectl来管理您的 K3s 集群。如果您有多个 kubeconfig 文件,可以在使用kubectl时通过传递文件路径来指定要使用的 kubeconfig 文件:

    1. kubectl --kubeconfig ~/.kube/config/k3s.yaml get pods --all-namespaces

    有关kubeconfig文件的更多信息,请参考 K3s 文档或中关于使用kubeconfig文件访问集群的部分。

    既然已经设置了kubeconfig文件,就可以使用kubectl从您的本地计算机访问集群了。

    检查所有需要的 Pod 和容器是否状况良好:

    1. ubuntu@ip-172-31-60-194:~$ sudo kubectl get pods --all-namespaces
    2. NAMESPACE NAME READY STATUS RESTARTS AGE
    3. kube-system metrics-server-6d684c7b5-bw59k 1/1 Running 0 8d
    4. kube-system local-path-provisioner-58fb86bdfd-fmkvd 1/1 Running 0 8d
    5. kube-system coredns-d798c9dd-ljjnf 1/1 Running 0 8d

    结果: 您已确认可以使用kubectl访问集群,并且 K3s 集群正在正确运行。现在,可以在集群上安装 Rancher Server 了。

    1、安装需要的 CLI 工具

    安装 Kubernetes 命令行工具 kubectl

    另外,安装,Rancher Kubernetes Engine,一种 Kubernetes 分发版和命令行工具。

    请按照RKE 文档中的说明安装 RKE。

    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选项。

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

    完成后,它应该以这样一行结束: Finished building Kubernetes cluster successfully.

    4、测试集群

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

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

    当您运行 rke up 时,RKE 应该已经创建了一个名为kube_config_rancher-cluster.ymlkubeconfig文件。该文件具有kubectlhelm的凭据。

    您可以将此文件复制到$HOME/.kube/config,或者如果您使用多个 Kubernetes 集群,请将KUBECONFIG环境变量设置为kube_config_rancher-cluster.yml的路径:

    1. export KUBECONFIG=$(pwd)/kube_config_rancher-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

    5、检查集群 Pod 的运行状况

    检查所有必需的 Pod 和容器是否状况良好,然后可以继续进行。

    • Pod 是RunningCompleted状态。
    • STATUSRunning 的 Pod,READY 应该显示所有容器正在运行 (例如,3/3)。
    • STATUSCompleted的 Pod 是一次运行的作业。对于这些 Pod,READY应为0/1

    这确认您已经成功安装了可以运行 Rancher Server 的 Kubernetes 集群。

    :::important 重要 需要用以下文件来进行集群维护,集群升级和故障排查。 :::

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

    • rancher-cluster.yml: RKE 集群配置文件。
    • kube_config_rancher-cluster.yml: 集群的,此文件包含用于访问集群的凭据。

    遇到问题或错误?