乐趣区

关于kubernetes:如何使用国内资源在-RKE2-上安装-Rancher-HA

作者简介

袁振,SUSE Rancher 技术支持经理,负责订阅客户售后技术支持团队,为订阅客户提供技术支持服务。2016 年开始接触容器、Kubernetes 技术,对自动化运维、Devops、Kubernetes、prometheus 和其余云原生相干技术具备较深刻的钻研,对 SRE 运维体系建设、SRE 运维零碎架构设计有着丰盛的实践经验。

前 言

Rancher 始终崇尚“简略即美”,装置和应用都把简略施展得酣畅淋漓。但通过国内环境应用 Rancher 和 RKE2 可能会因为网络问题导致应用体验不佳:

  • Rancher 和 RKE2 启动都依赖于容器镜像,在国内通过 dockerhub 拉取镜像有时会十分慢。
  • RKE2 默认应用 github 资源装置脚本和二进制文件,国内难以下载。

为了解决上述问题,Rancher 曾经把资源 mirror 到了国内,并提供给国内环境应用,本文将为大家介绍如何应用国内资源在 RKE2 上装置 Rancher HA。

环境形容

  • 操作系统:SUSE Linux Enterprise Server 15 SP3
  • Kubernetes 发行版:RKE2 Kubernetes-v1.21.9+rke2r1
  • Rancher 版本:2.6.3
  • 节点信息
  • rancher2-6-node01 Server 节点(controller、etcd、worker)
  • rancher2-6-node02 Server 节点(controller、etcd、worker)
  • rancher2-6-node03 Server 节点(controller、etcd、worker)
  • Helm 3.8.0

部署 RKE2 Kubernetes 集群

  • 本章将介绍如何部署 RKE2 的高可用集群,用于 Rancher 2.6 版本的部署环境应用;
  • Rancher 中国团队定时将 dockerhub 上的 RKE2 镜像同步到国内阿里云镜像仓库(registry.cn-hangzhou.aliyuncs.com),所以在国内装置 RKE2 举荐应用阿里云镜像仓库地址;
  • RKE2 能够通过参数 system-default-registry 指定镜像仓库地址。

创立第一个 server 节点

通常状况下,RKE2 应用 /etc/rancher/rke2/config.yaml 文件作为默认配置文件。然而集群部署模式下,须要指定 server 地址、token 和 tls-san 参数,能够后行创立配置文件:

mkdir -p /etc/rancher/rke2 ## 创立目录
vim /etc/rancher/rke2/config.yaml ## 编辑配置文件

token: rke2-create-token ## 自定义 token
tls-san: 172.16.200.1 ##tls-san 参数
system-default-registry: "registry.cn-hangzhou.aliyuncs.com" ## 阿里云镜像库地址

更多配置选项可查看官网文档,配置文件创立实现后,应用以下命令执行脚本装置 rke2-server,因为截止本文收回后的 Rancher 2.6.3 版本尚不反对在 kubernetes 1.22 版本上运行,因而这里应用 v1.21.9+rke2r1 的 kubernetes 版本:

curl -sfL http://rancher-mirror.rancher.cn/rke2/install.sh |
INSTALL_RKE2_MIRROR=cn INSTALL_RKE2_VERSION=v1.21.9+rke2r1 sh -

执行以下命令将 rke2 启动并设置为开机自启动(第一次启动须要下载镜像等文件,须要肯定工夫):

systemctl start rke2-server && systemctl enable rke2-server

默认的 kubectl 工具和 kubeconfig 文件门路如下:

kubectl: /var/lib/rancher/rke2/bin/kubectl
kubeconfig: /etc/rancher/rke2/rke2.yaml
crictl: /var/lib/rancher/rke2/bin/crictl
ctr: /var/lib/rancher/rke2/bin/ctr

以上工具能够软链接到 /usr/bin 下方便使用,例如:

ln -s /var/lib/rancher/rke2/bin/kubectl /usr/bin/kubect

执行以下命令能够查看集群状态:

kubectl --kubeconfig /etc/rancher/rke2/rke2.yaml get node

NAME STATUS ROLES AGE VERSION
rancher2-6-node01 Ready control-plane,etcd,master 106s v1.21.9+rke2r1

增加其余 server 节点

在上一个步骤中,咱们曾经胜利启动了第一个 server 节点,当初须要将剩下的两个节点增加到集群中,以组成高可用集群。

在增加第二个 server 节点前,须要手动创立一个 RKE2 配置文件:

mkdir -p /etc/rancher/rke2 ## 创立目录
vim /etc/rancher/rke2/config.yaml ## 编辑配置文件

server: https://172.16.200.1:9345 ## 增加首个节点的 server 地址;token: <token for server node> ## 填写第一个 server 节点的 token,通过在第一个节点查看 /var/lib/rancher/rke2/server/token 文件取得;tls-san: 172.16.200.1 ##tls-san 参数;system-default-registry:"registry.cn-hangzhou.aliyuncs.com" ## 阿里云镜像库地址;

执行以下命令执行脚本装置 rke2-server:

curl -sfL http://rancher-mirror.rancher.cn/rke2/install.sh |
 INSTALL_RKE2_MIRROR=cn INSTALL_RKE2_VERSION=v1.21.9+rke2r1 sh -

执行以下命令将 rke2 启动并设置为开机自启动(第一次启动须要下载镜像等文件,须要肯定工夫):

systemctl start rke2-server && systemctl enable rke2-server

同样,在增加第三个 server 节点前,须要手动创立一个 RKE2 配置文件:

mkdir -p /etc/rancher/rke2 ## 创立目录
vim /etc/rancher/rke2/config.yaml ## 编辑配置文件

server: https://172.16.200.1:9345 ## 增加首个节点的 server 地址;token: <token for server node> ## 填写第一个 server 节点的 token,通过在第一个节点查看 /var/lib/rancher/rke2/server/token 文件取得;tls-san: 172.16.200.1 ##tls-san 参数;system-default-registry: "registry.cn-hangzhou.aliyuncs.com" ## 阿里云镜像库地址;

执行以下命令执行脚本装置 rke2-server:

curl -sfL http://rancher-mirror.rancher.cn/rke2/install.sh |
INSTALL_RKE2_MIRROR=cn INSTALL_RKE2_VERSION=v1.21.9+rke2r1 sh - 

执行以下命令将 rke2 启动并设置为开机自启动(第一次启动须要下载镜像等文件,须要肯定工夫):

systemctl start rke2-server && systemctl enable rke2-server

验证集群

执行以下命令能够查看集群状态:

kubectl --kubeconfig /etc/rancher/rke2/rke2.yaml get node

NAME                              STATUS   ROLES                                             AGE VERSION
rancher2-6-node01   Ready      control-plane,etcd,master     18m v1.21.9+rke2r1
rancher2-6-node02   Ready      control-plane,etcd,master     7m29s v1.21.9+rke2r1
rancher2-6-node03   Ready      control-plane,etcd,master     3m31s v1.21.9+rke2r1

至此,咱们曾经胜利创立并运行由 RKE2 创立的 kubernetes 高可用集群,但须要留神的是 RKE2 官网最佳实际表明,高可用集群应该由对立的 LB 入口拜访,这样才是真正的高可用。本文次要介绍了 Rancher 2.6 版本在 RKE2 集群上的部署,更具体的 RKE2 应用、部署请参考 RKE2 官网文档 (https://docs.rancher.cn/docs/…)或者 官网公众号文章

RKE2 默认应用 containerd 作为 Runtime,如果想要查问主机上运行的容器,能够应用以下命令:

crictl --config /var/lib/rancher/rke2/agent/etc/crictl.yaml ps

部署 Rancher 2.6.3

  • 本章将介绍如何在 RKE2 集群中部署 Rancher 2.6.3 版本;
  • Rancher 中国团队定时将 dockerhub 上的 Rancher 镜像同步到国内阿里云镜像仓库(registry.cn-hangzhou.aliyuncs.com),所以在国内装置 Rancher 举荐应用阿里云镜像仓库地址;
  • 能够通过 helm chart 选项 rancherImage 和 systemDefaultRegistry 来设置应用阿里云镜像仓库。

装置 Rancher 2.6.3

增加 Rancher helm repo 源:

helm repo add rancher-latest http://rancher-mirror.oss-cn-beijing.aliyuncs.com/server-charts/latest

"rancher-latest" has been added to your repositories

此处应用为国内源地址,国外地址应用 https://releases.rancher.com/…;CHART_REPO> 对于更多国内减速信息,请查看官网公众号【如何在国内优雅地应用 Rancher】

为 Rancher 创立 Namespace:

kubeconfig=/etc/rancher/rke2/rke2.yaml

kubectl --kubeconfig=$kubeconfig create namespace cattle-system

创立 Ingress 证书:

kubeconfig=/etc/rancher/rke2/rke2.yaml

kubectl --kubeconfig=$kubeconfig \
          -n cattle-system create secret \
          tls tls-rancher-ingress \
          --cert=./tls.pem \
          --key=./tls.key

helm 装置 Rancher Server:

helm --kubeconfig=$kubeconfig install rancher rancher-latest/rancher \
          --namespace cattle-system \
          --set hostname=rancher26.itlsp.com \
          --set rancherImage=registry.cn-hangzhou.aliyuncs.com/rancher/rancher \
          --set ingress.tls.source=secret \
          --set systemDefaultRegistry=registry.cn-hangzhou.aliyuncs.com \
          --set rancherImageTag=v2.6.3

## hostname 为上一步创立证书中的 hostname;## systemDefaultRegistry 和 rancherImage 中的镜像库可指定;## 以上命令为权威证书装置命令,如果是自签名证书参考以下命令

## 创立自签名 Ingress 证书
kubectl --kubeconfig=$kubeconfig \
           -n cattle-system create \
           secret tls tls-rancher-ingress \
           --cert=./tls.crt \
           --key=./tls.key
## 创立自签名证书 CA
kubectl --kubeconfig=$kubeconfig \
           -n cattle-system \
           create secret generic tls-ca \
           --from-file=cacerts.pem

##helm 装置 Rancher server
helm --kubeconfig=$kubeconfig install rancher rancher-latest/rancher \
         --namespace cattle-system \
         --set hostname=< 批改为本人的域名 > \
         --set rancherImage=< 镜像库地址 >/cnrancher/rancher \
         --set privateCA=true \
         --set ingress.tls.source=secret \
         --set systemDefaultRegistry=< 镜像库地址 > \
         --set rancherImageTag=v2.6.3

执行以下命令查看 Rancher Server Pod 状态:

kubectl --kubeconfig=$kubeconfig -n cattle-system get pod | grep rancher

rancher-57f57f775-4bjdj 1/1 Running 1 5m58s
rancher-57f57f775-fdh6c 1/1 Running 0 5m58s
rancher-57f57f775-fnsxk 1/1 Running 0 5m58s

祝贺你!到这个步骤,应该曾经能够通过浏览器拜访全新的 Rancher 2.6.3 版本了。至此,全新的 Rancher2.6.3 版本曾经运行在更平安、更稳固、更高效的 RKE2 平台上。

总结

  • RKE2 是 SUSE Rancher 下一代 Kubernetes 发行版,它以更高的安全性著称(它还有另外一个名字:RKE Government);启用了 FIPS 140-2 规范,并齐全通过了 CIS1.5 和 1.6 版本的扫描;
  • 另外 RKE2 默认未采纳 docker 作为 Runtime,而是应用了更底层的 containerd;针对 kubernetes 摈弃 docker 后何去何从这一问题,这一做法大大稳固了国内用户的信念;
  • RKE2 将 kube-apiserver、etcd、kube-controller-manager 等外围组件作为动态 Pod 运行,由二进制运行的 kubelet 进行治理,加强了故障自愈能力和整体的稳定性,也升高了部署难度;
  • 本文中装置 Rancher 和 RKE2 均应用了阿里云镜像仓库 registry.cn-hangzhou.aliyuncs.com,装置 RKE2 的脚本也应用了国内的资源,这样能大大晋升国内用户的体验。
退出移动版