草庐IT

RKE2部署高可用Rancher v2.7.1

JamesCurtis 2023-08-29 原文

先决条件

  • 注意修改主机名,不要有冲突

配置负载均衡器和健康检查

我这里使用的是VMware NSX-T负载均衡

这里有个坑,80端口的响应代码,需要把307,308,303标记为健康的状态码

第一个server节点安装

官方文档的描述感觉对于新手来说太不友好了,建议以下链接都看一下。Rancher新老文档都建议看一下,不然刚刚入门很蒙。

RKE2快速开始:https://docs.rke2.io/zh/install/quickstart

RKE2高可用:https://docs.rke2.io/zh/install/ha

RKE2离线安装:https://docs.rke2.io/zh/install/airgap

RKE2卸载:https://docs.rke2.io/zh/install/linux_uninstall

Rancher Helm CLI快速入门:https://ranchermanager.docs.rancher.com/zh/getting-started/quick-start-guides/deploy-rancher-manager/helm-cli

Rancher 离线Helm安装:https://ranchermanager.docs.rancher.com/zh/getting-started/installation-and-upgrade/other-installation-methods/air-gapped-helm-cli-install/install-rancher-ha

老版Rancher文档 离线安装:https://docs.rancher.cn/docs/rancher2/installation/other-installation-methods/air-gap/install-rancher/_index

老版Rancher文档 如何在国内使用 Rancher:https://docs.rancher.cn/docs/rancher2/best-practices/use-in-china/_index/

# 卸载
/usr/local/bin/rke2-uninstall.sh

# 配置文件,load_balancer_addr 负载均衡ip或者第一台serverip
load_balancer_addr=172.16.10.241

mkdir -p /etc/rancher/rke2 && echo "
tls-san:
  - ${load_balancer_addr}
system-default-registry: \"docker.nju.edu.cn\"
" > /etc/rancher/rke2/config.yaml

# 检查配置
cat /etc/rancher/rke2/config.yaml

# 指定版本安装
curl -sfL https://rancher-mirror.rancher.cn/rke2/install.sh | INSTALL_RKE2_MIRROR=cn INSTALL_RKE2_VERSION=v1.22.17+rke2r1 sh -
# 安装最新stable版本
# curl -sfL https://rancher-mirror.rancher.cn/rke2/install.sh | INSTALL_RKE2_MIRROR=cn sh -
systemctl enable rke2-server.service && systemctl start rke2-server.service

# 查看日志
# journalctl -u rke2-server -f

实用程序注册到PATH

kubeconfig默认的server地址是127.0.0.1

在最小集群安装完成之后需要修改为负载均衡地址

echo 'export PATH=$PATH:/var/lib/rancher/rke2/bin;' >> ~/.bashrc && source ~/.bashrc
mkdir -p ~/.kube && rm -f ~/.kube/config && ln -s /etc/rancher/rke2/rke2.yaml ~/.kube/config

等待所有pod运行

root@rke1:~# watch -n 1 kubectl get pods -A

Every 1.0s: kubectl get pods -A                                                                                                                                                                             rke1: Thu Mar 16 21:22:08 2023

NAMESPACE     NAME                                                   READY   STATUS      RESTARTS   AGE
kube-system   cloud-controller-manager-rke1                          1/1     Running     0          33m
kube-system   etcd-rke1                                              1/1     Running     0          33m
kube-system   helm-install-rke2-canal-mscjh                          0/1     Completed   0          34m
kube-system   helm-install-rke2-coredns-qrmgn                        0/1     Completed   0          34m
kube-system   helm-install-rke2-ingress-nginx-ddt95                  0/1     Completed   0          34m
kube-system   helm-install-rke2-metrics-server-6cm27                 0/1     Completed   0          34m
kube-system   kube-apiserver-rke1                                    1/1     Running     0          33m
kube-system   kube-controller-manager-rke1                           1/1     Running     0          33m
kube-system   kube-proxy-rke1                                        1/1     Running     0          33m
kube-system   kube-scheduler-rke1                                    1/1     Running     0          33m
kube-system   rke2-canal-f56nc                                       2/2     Running     0          32m
kube-system   rke2-coredns-rke2-coredns-69844654d9-lsvw6             1/1     Running     0          32m
kube-system   rke2-coredns-rke2-coredns-autoscaler-95d984597-p9r6k   1/1     Running     0          32m
kube-system   rke2-ingress-nginx-controller-4ddx9                    1/1     Running     0          29m
kube-system   rke2-metrics-server-765b64878b-jtq2v                   1/1     Running     0          30m

注册令牌,接下来要用

cat /var/lib/rancher/rke2/server/node-token

其他server节点安装

# 配置文件,load_balancer_addr 负载均衡ip或者第一台serverip
load_balancer_addr=172.16.10.241 node_token=xxxxxxxx

mkdir -p /etc/rancher/rke2 && echo "
server: https://${load_balancer_addr}:9345
token: ${node_token}
tls-san:
  - ${load_balancer_addr}
system-default-registry: \"docker.nju.edu.cn\"
" > /etc/rancher/rke2/config.yaml

# 检查配置
cat /etc/rancher/rke2/config.yaml

# 安装
curl -sfL https://rancher-mirror.rancher.cn/rke2/install.sh | INSTALL_RKE2_MIRROR=cn INSTALL_RKE2_VERSION=v1.22.17+rke2r1 sh -
systemctl enable rke2-server.service && systemctl start rke2-server.service

实用程序注册到PATH

echo 'export PATH=$PATH:/var/lib/rancher/rke2/bin;' >> ~/.bashrc && source ~/.bashrc
mkdir -p ~/.kube && rm -f ~/.kube/config && ln -s /etc/rancher/rke2/rke2.yaml ~/.kube/config

这里使用kubectl可能会反应很慢,需要修改kubeconfig中server的地址为负载均衡地址

load_balancer_addr=rancher2.ent.top
sed -i.bak "s/127.0.0.1:6443/${load_balancer_addr}:6443/" /etc/rancher/rke2/rke2.yaml

安装helm

# 下载 helm 并上传 https://github.com/helm/helm/releases
rm -rf linux-amd64/helm && tar -zxvf helm-v3.10.3-linux-amd64.tar.gz && mv linux-amd64/helm /usr/local/bin/helm && helm version

安装Cert-Manager

# 可以下载过来然后在 kubectl apply -f cert-manager.crds.yaml
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.7.1/cert-manager.crds.yaml

helm repo add jetstack https://charts.jetstack.io && helm repo update

helm install cert-manager jetstack/cert-manager \
--set image.repository=quay.nju.edu.cn/jetstack/cert-manager-controller \
--set webhook.image.repository=quay.nju.edu.cn/jetstack/cert-manager-webhook \
--set cainjector.image.repository=quay.nju.edu.cn/jetstack/cert-manager-cainjector \
--set startupapicheck.image.repository=quay.nju.edu.cn/jetstack/cert-manager-ctl \
--namespace cert-manager \
--create-namespace \
--version v1.7.1

安装Rancher

这里也有个坑,不能安装离线安装文档中加
--set certmanager.version=<CERTMANAGER_VERSION> 参数,会报错如下
unable to build kubernetes objects from release manifest: resource mapping not found for name: "rancher" namespace: ""

helm repo add rancher-latest https://rancher-mirror.rancher.cn/server-charts/latest

kubectl create namespace cattle-system

# rancher域名,要么解析dns,要么加入自己电脑hosts
rancher_domain=rancher01.ent.top
helm install rancher rancher-latest/rancher \
--namespace cattle-system \
--set hostname=${rancher_domain} \
--set rancherImage=docker.nju.edu.cn/rancher/rancher \
--set systemDefaultRegistry=docker.nju.edu.cn

安装完成

密码看提示
$(kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{{.data.bootstrapPassword|base64decode}}')
或者直接用链接(其实就是跳过输入上面随机密码的阶段,直接到下一步设置admin密码)
echo https://rancher01.ent.top/dashboard/?setup=$(kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{{.data.bootstrapPassword|base64decode}}')



有关RKE2部署高可用Rancher v2.7.1的更多相关文章

  1. ruby-on-rails - 如何使辅助方法在 Rails 集成测试中可用? - 2

    我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel

  2. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

    我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

  3. ruby-on-rails - Ruby on Rails 可以部署在 Azure 网站上吗? - 2

    我可以在Azure网站上部署RubyonRails吗? 最佳答案 还没有。目前仅支持.NET和PHP。 关于ruby-on-rails-RubyonRails可以部署在Azure网站上吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12964010/

  4. jenkins部署1--jenkins+gitee持续集成 - 2

    前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon

  5. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  6. Ruby,使用包含 TK GUI 的 ocra 部署一个 exe - 2

    Ocra无法处理需要“tk”的应用程序require'tk'puts'nope'用奥克拉http://github.com/larsch/ocra不起作用(如链接中的一个问题所述)问题:https://github.com/larsch/ocra/issues/29(Ocra是1.9的"new"rubyscript2exe,本质上它用于将rb脚本部署为可执行文件)唯一的问题似乎是缺少tcl的DLL文件我不认为这是一个问题据我所知,问题是缺少tk的DLL文件如果它们是已知的,则可以在执行ocra时将它们包括在内有没有办法知道tk工作所需的DLL依赖项? 最佳答

  7. ruby-on-rails - self 在 Rails 模型中的值(value)是什么?为什么没有明显的实例方法可用? - 2

    我的rails3.1.6应用程序中有一个自定义访问器方法,它为一个属性分配一个值,即使该值不存在。my_attr属性是一个序列化的哈希,除非为空白,否则应与给定值合并指定了值,在这种情况下,它将当前值设置为空值。(添加了检查以确保值是它们应该的值,但为简洁起见被删除,因为它们不是我的问题的一部分。)我的setter定义为:defmy_attr=(new_val)cur_val=read_attribute(:my_attr)#storecurrentvalue#makesureweareworkingwithahash,andresetvalueifablankvalueisgiven

  8. ruby-on-rails - NameError(未初始化常量 Unzipper::Zip)但仅在 Heroku 部署(Rails)上 - 2

    我有一个类unzipper.rb,它使用Rubyzip解压文件。在我的本地环境中,我可以成功解压缩文件,而无需使用require'zip'明确包含依赖项但是在Heroku上,我得到一个NameError(uninitializedconstantUnzipper::Zip)我只能通过使用明确的require来解决问题:为什么这在H​​eroku环境中是必需的,但在本地主机上却不是?我的印象是Rails自动需要所有gem。app/services/unzipper.rbrequire'zip'#OnlyrequiredforHeroku.Workslocallywithout!class

  9. ruby - Sinatra + Heroku + Datamapper 使用 dm-sqlite-adapter 部署问题 - 2

    出于某种原因,heroku尝试要求dm-sqlite-adapter,即使它应该在这里使用Postgres。请注意,这发生在我打开任何URL时-而不是在gitpush本身期间。我构建了一个默认的Facebook应用程序。gem文件:source:gemcuttergem"foreman"gem"sinatra"gem"mogli"gem"json"gem"httparty"gem"thin"gem"data_mapper"gem"heroku"group:productiondogem"pg"gem"dm-postgres-adapter"endgroup:development,:t

  10. ruby - 输出液体模板中的可用对象和属性 - 2

    有没有办法在liquidtemplate中输出(用于调试/信息目的)可用对象和对象属性??也就是说,假设我正在使用jekyll站点生成工具,并且我在我的index.html模板中(据我所知,这是一个液体模板)。它可能看起来像这样{%forpostinsite.posts%}{{post.date|date_to_string}}»{{post.title}}{%endfor%}是否有任何我可以使用的模板标签会告诉我/输出名为post的变量在此模板(以及其他模板)中可用。此外,是否有任何模板标签可以告诉我post对象具有键date、title、url、摘录、永久链接等

随机推荐