本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

为SUSE® Rancher Prime: K3s高可用性Kubernetes集群设置SUSE Rancher Prime

本节描述如何按照Rancher服务器环境的最佳实践安装Kubernetes集群。

对于没有直接互联网访问的系统,请参考隔离安装说明。

单节点安装提示:

在单节点Kubernetes集群中,Rancher服务器没有高可用性,这对于在生产中运行Rancher非常重要。然而,在单节点集群上安装Rancher可能是有用的,如果您希望在短期内通过使用单个节点来节省资源,同时保留高可用性迁移路径。

要设置单节点K3s集群,请仅在一个节点上运行Rancher服务器安装命令,而不是在两个节点上。

在这两种单节点设置中,Rancher可以像在任何其他集群上那样,通过Helm在Kubernetes集群上安装。

先决条件

这些说明假设您已设置两个节点、一个负载均衡器、一个DNS记录和一个外部MySQL数据库,如本节所述。

Rancher 需要安装在受支持的 Kubernetes 版本上。要查找与您的Rancher版本兼容的Kubernetes版本,请参考 Rancher支持矩阵

要指定K3s(Kubernetes)版本,请在运行K3s安装脚本时使用INSTALL_K3S_VERSION(例如,INSTALL_K3S_VERSION="v1.24.10+k3s1")环境变量。

安装Kubernetes

1.安装Kubernetes并设置SUSE® Rancher Prime: K3s服务器

在运行命令以启动K3s Kubernetes API服务器时,您将传入一个选项以使用您之前设置的外部数据存储。

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

  2. 在Linux节点上,运行此命令以启动K3s服务器并将其连接到外部数据存储:

     curl -sfL https://get.k3s.io |  INSTALL_K3S_VERSION=<VERSION> sh -s - server \
       --datastore-endpoint="<DATASTORE_ENDPOINT>"

    其中`<DATASTORE_ENDPOINT>`是您数据存储的连接URI。例如,如果您使用MySQL,则为`mysql://username:password@tcp(hostname:3306)/database-name`。有效的数据存储包括etcd、MySQL、PostgreSQL或SQLite(默认)。

    数据存储端点也可以通过环境变量`$K3S_DATASTORE_ENDPOINT`传递。

  3. 获取主服务器节点令牌:

     cat /var/lib/rancher/k3s/server/token
  4. 在您的第二个 K3s 服务器节点上运行命令:

       curl -sfL https://get.k3s.io |  INSTALL_K3S_VERSION=<VERSION> sh -s - server \
         --datastore-endpoint="<DATASTORE_ENDPOINT>" \
         --token "<MAIN_SERVER_NODE_TOKEN>"

2.确认 SUSE® Rancher Prime: K3s 正在运行

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

sudo k3s kubectl get nodes

然后您应该看到两个具有主角色的节点:

ubuntu@ip-172-31-60-194:~$ sudo k3s kubectl get nodes
NAME               STATUS   ROLES    AGE    VERSION
ip-172-31-60-194   Ready    master   44m    v1.17.2+k3s1
ip-172-31-63-88    Ready    master   6m8s   v1.17.2+k3s1

然后测试集群 Pod 的健康状况:

sudo k3s kubectl get pods --all-namespaces

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

3.保存并开始使用 kubeconfig 文件

当您在每个 Rancher 服务器节点上安装 K3s 时,节点上会创建一个 kubeconfig 文件,路径为 /etc/rancher/k3s/k3s.yaml。该文件包含对集群的完全访问权限的凭据,您应该将此文件保存在安全的位置。

要使用此 kubeconfig 文件,

  1. 安装 kubectl,,这是一个 Kubernetes 命令行工具。

  2. 复制 /etc/rancher/k3s/k3s.yaml 处的文件,并将其保存到您本地计算机的 ~/.kube/config 目录中。

  3. 在 kubeconfig 文件中,server 指令被定义为 localhost。将服务器配置为负载均衡器的 DNS,参考端口 6443。(Kubernetes API 服务器将在端口 6443 访问,而 Rancher 服务器将在端口 80 和 443 访问。)示例如下`k3s.yaml`:

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: [CERTIFICATE-DATA]
    server: [LOAD-BALANCER-DNS]:6443 # Edit this line
  name: default
contexts:
- context:
    cluster: default
    user: default
  name: default
current-context: default
kind: Config
preferences: {}
users:
- name: default
  user:
    password: [PASSWORD]
    username: admin

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

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

有关 kubeconfig 文件的更多信息,请参考 K3s 文档官方 Kubernetes 文档,了解如何使用 kubeconfig 文件组织集群访问。

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

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

检查所有必需的 Pod 和容器是否健康且已准备好继续:

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

*结果:*您已确认可以使用 kubectl 访问集群,并且 K3s 集群正在成功运行。现在可以在集群上安装 Rancher 管理服务器。