为 SUSE® Rancher Prime 设置高可用的 SUSE® Rancher Prime: RKE2 Kubernetes 集群
本文介绍了如何根据 Rancher Server 环境的最佳实践安装 Kubernetes 集群。
安装 Kubernetes
1. 安装 Kubernetes 并设置 SUSE® Rancher Prime: RKE2 Server
RKE2 Server 使用嵌入式 etcd 运行。因此你不需要设置外部数据存储就可以在 HA 模式下运行。
在第一个节点上,使用你的预共享密文作为 Token 来设置配置文件。Token 参数可以在启动时设置。
如果你不指定预共享密文,RKE2 会生成一个预共享密文并将它放在 /var/lib/rancher/rke2/server/node-token
中。
为了避免固定注册地址的证书错误,请在启动 Server 时设置 tls-san
参数。这个选项在 Server 的 TLS 证书中增加一个额外的主机名或 IP 作为 Subject Alternative Name。如果你想通过 IP 和主机名访问,你可以将它指定为一个列表。
首先,创建用于存放 RKE2 配置文件的目录:
mkdir -p /etc/rancher/rke2/
然后,参见以下示例在 /etc/rancher/rke2/config.yaml
中创建 RKE2 配置文件:
token: my-shared-secret tls-san: - my-kubernetes-domain.com - another-kubernetes-domain.com
之后,运行安装命令并启用和启动 RKE2:
curl -sfL https://get.rke2.io | sh - systemctl enable rke2-server.service systemctl start rke2-server.service
-
要加入其余的节点,使用同一个共享或自动生成的 Token 来配置每个额外的节点。以下是配置文件的示例:
token: my-shared-secret server: https://<DNS-DOMAIN>:9345 tls-san: - my-kubernetes-domain.com - another-kubernetes-domain.com 运行安装程序,然后启用并启动 RKE2: curl -sfL https://get.rke2.io | sh - systemctl enable rke2-server.service systemctl start rke2-server.service
-
在第三 RKE2 Server 节点上运行同样的命令。
2. 检查 SUSE® Rancher Prime: RKE2 是否正常运行
在所有 Server 节点上启动了 RKE2 Server 进程后,确保集群已经正常启动,请运行以下命令:
/var/lib/rancher/rke2/bin/kubectl \ --kubeconfig /etc/rancher/rke2/rke2.yaml get nodes 现在,Server 节点的状态应该是 Ready。
测试集群 Pod 的健康状况:
/var/lib/rancher/rke2/bin/kubectl \ --kubeconfig /etc/rancher/rke2/rke2.yaml get pods --all-namespaces
结果:你已成功配置 RKE2 Kubernetes 集群。
3. 保存并开始使用 kubeconfig 文件
在每个 Rancher Server 节点安装 RKE2 时,会在每个节点的 /etc/rancher/rke2/rke2.yaml
中生成一个 kubeconfig
文件。该文件包含访问集群的凭证。请将该文件保存在安全的位置。
如要使用该 kubeconfig
文件:
-
安装 Kubernetes 命令行工具 kubectl。
-
复制
/etc/rancher/rke2/rke2.yaml
文件并保存到本地主机的~/.kube/config
目录上。 -
在 kubeconfig 文件中,
server
的参数为 localhost。在端口 6443 上将服务器配置为 controlplane 负载均衡器的 DNS(RKE2 Kubernetes API Server 使用端口 6443,而 Rancher Server 将通过 NGINX Ingress 在端口 80 和 443 上提供服务。)以下是一个示例rke2.yaml
:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: [CERTIFICATE-DATA]
server: [LOAD-BALANCER-DNS]:6443 # 编辑此行
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
来管理你的 RKE2 集群。如果你有多个 kubeconfig
文件,在使用 kubectl
时,你可以传入文件路径来指定要使用的 kubeconfig
文件:
kubectl --kubeconfig ~/.kube/config/rke2.yaml get pods --all-namespaces
有关 kubeconfig
文件的详情,请参见 RKE2 官方文档或 Kubernetes 官方文档中关于使用 kubeconfig
文件管理集群访问的部分。
4. 检查集群 Pod 的健康状况
现在你已经设置了 kubeconfig
文件。你可以使用 kubectl
在本地主机访问集群。
检查所有需要的 Pod 和容器是否健康:
/var/lib/rancher/rke2/bin/kubectl --kubeconfig /etc/rancher/rke2/rke2.yaml get pods -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system cloud-controller-manager-rke2-server-1 1/1 Running 0 2m28s kube-system cloud-controller-manager-rke2-server-2 1/1 Running 0 61s kube-system cloud-controller-manager-rke2-server-3 1/1 Running 0 49s kube-system etcd-rke2-server-1 1/1 Running 0 2m13s kube-system etcd-rke2-server-2 1/1 Running 0 87s kube-system etcd-rke2-server-3 1/1 Running 0 56s kube-system helm-install-rke2-canal-hs6sx 0/1 Completed 0 2m17s kube-system helm-install-rke2-coredns-xmzm8 0/1 Completed 0 2m17s kube-system helm-install-rke2-ingress-nginx-flwnl 0/1 Completed 0 2m17s kube-system helm-install-rke2-metrics-server-7sggn 0/1 Completed 0 2m17s kube-system kube-apiserver-rke2-server-1 1/1 Running 0 116s kube-system kube-apiserver-rke2-server-2 1/1 Running 0 66s kube-system kube-apiserver-rke2-server-3 1/1 Running 0 48s kube-system kube-controller-manager-rke2-server-1 1/1 Running 0 2m30s kube-system kube-controller-manager-rke2-server-2 1/1 Running 0 57s kube-system kube-controller-manager-rke2-server-3 1/1 Running 0 42s kube-system kube-proxy-rke2-server-1 1/1 Running 0 2m25s kube-system kube-proxy-rke2-server-2 1/1 Running 0 59s kube-system kube-proxy-rke2-server-3 1/1 Running 0 85s kube-system kube-scheduler-rke2-server-1 1/1 Running 0 2m30s kube-system kube-scheduler-rke2-server-2 1/1 Running 0 57s kube-system kube-scheduler-rke2-server-3 1/1 Running 0 42s kube-system rke2-canal-b9lvm 2/2 Running 0 91s kube-system rke2-canal-khwp2 2/2 Running 0 2m5s kube-system rke2-canal-swfmq 2/2 Running 0 105s kube-system rke2-coredns-rke2-coredns-547d5499cb-6tvwb 1/1 Running 0 92s kube-system rke2-coredns-rke2-coredns-547d5499cb-rdttj 1/1 Running 0 2m8s kube-system rke2-coredns-rke2-coredns-autoscaler-65c9bb465d-85sq5 1/1 Running 0 2m8s kube-system rke2-ingress-nginx-controller-69qxc 1/1 Running 0 52s kube-system rke2-ingress-nginx-controller-7hprp 1/1 Running 0 52s kube-system rke2-ingress-nginx-controller-x658h 1/1 Running 0 52s kube-system rke2-metrics-server-6564db4569-vdfkn 1/1 Running 0 66s
结果:你可通过使用 kubectl
访问集群,并且 RKE2 集群能成功运行。现在,你可以在集群上安装 Rancher Management Server。