草庐IT

k3s 搭建高可用rancher

品儿 2023-11-09 原文

注意:ubuntu 20.0.4环境安装

第一步 安装k3s server节点

curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn \
K3S_KUBECONFIG_OUTPUT=/root/.kube/config INSTALL_K3S_VERSION=v1.20.15+k3s1 sh -s - server --datastore-endpoint="mysql://root:root@tcp(192.168.0.145:3306)/k3s"
  • 命令解析
    K3S_KUBECONFIG_OUTPUT=/root/.kube/config (不指定helm没法使用)

第二步 安装helm

helm官网

第三步 确认k3s是否安装成功

systemctl start k3s.service  //启动k3s服务
systemctl status k3s.service  //查看k3s服务状态

执行命令后出现如下图说明k3s安装成功,已经启动

第四步 查看节点服务和helm是否正常

 kubectl get node // 查看节点服务
 kubectl delete node 节点name名称   // 删除节点
 kubectl get nodes -o wide   // 查看节点ip

如图 kubectl 命令行工具可以使用kubectl官网
说明:kubectl不需要我们另安装,在安装k3s时默认就安装好了

如何helm 可以使用

通过以上四个步骤,k3s服务节点安装成功了,下面我们在k3s上安装rancher

第五步 k3s上安装rancher

官网链接
Helm Chart 安装 Rancher
5.1 添加 Helm Chart 仓库

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

5.2 为 Rancher 创建 Namespace

kubectl create namespace cattle-system

5.3 选择你的 SSL 选项
Rancher Server 默认需要 SSL/TLS 配置来保证访问的安全性。
这里我选择自己生成的已有证书

5.4 证书生成

注意: 可以使用 一键生成 ssl 自签名证书脚本 来快速生成符合 rancher 要求的自签名证书。

生成示例:

--ssl-domain: 生成ssl证书需要的主域名,如不指定则默认为www.rancher.local,如果是ip访问服务,则可忽略;
--ssl-trusted-ip: 一般ssl证书只信任域名的访问请求,有时候需要使用ip去访问server,那么需要给ssl证书添加扩展IP,多个IP用逗号隔开;
--ssl-trusted-domain: 如果想多个域名访问,则添加扩展域名(TRUSTED_DOMAIN),多个TRUSTED_DOMAIN用逗号隔开;
--ssl-size: ssl加密位数,默认2048--ssl-cn: 国家代码(2个字母的代号),默认CN;

./create_self-signed-cert.sh --ssl-domain=rancher.test.com --ssl-trusted-ip=192.168.0.118 --ssl-size=2048 --ssl-date=3650

如图生成证书相关文件:

5.5 检查证书

openssl verify -CAfile cacerts.pem tls.crt 应该返回状态为 ok

5.6 检查域名和扩展ip是否正确

openssl x509 -in tls.crt -noout -text

5.7 正式安装rancher 服务

注意:

  • –set hostname = 生成证书时的域名
  • 将replicas设置为 Rancher 部署所使用的复制数量。默认为 3;如果你的集群中少于 3 个节点,你应填写实际节点数量。
  • 设置ingress.tls.source为secret。
  • 要安装一个特定的 Rancher 版本,使用–version 标志,例如:–version 2.3.6
  • 如果你使用的是私有 CA 证书,请在命令中增加 --set privateCA=true。

这里我们选择安装rancher 2.5.15版本,执行下列命令安装rancher

 helm install rancher rancher-stable/rancher \
 --namespace cattle-system \
 --set hostname=rancher.test.com \
 --set replicas=2 \
 --version 2.5.15 \
 --set ingress.tls.source=secret \
 --set privateCA=true

5.8 验证 Rancher Server 是否已成功部署
执行下列命令后,需要耐心等待

kubectl -n cattle-system rollout status deploy/rancher

5.9 检查 deployment 的状态

kubectl -n cattle-system get deploy rancher


DESIRED和AVAILABLE应该显示相同的个数

到这一步,我们的rancher服务部署成功了

6.0 发布证书
参考添加 TLS Secret 发布证书文件,以便 Rancher 和 ingress 控制器可以使用它们。

kubectl -n cattle-system create secret tls tls-rancher-ingress \
  --cert=tls.crt \
  --key=tls.key
kubectl -n cattle-system create secret generic tls-ca \
  --from-file=cacerts.pem=./cacerts.pem

6.1查看rancher日志是否有错误

kubectl logs -f -l app=rancher -n cattle-system

如图没有任务错误

6.2 配置k3s所在的主机hosts

vi /etc/hosts

6.3 开始访问rancher server
因为我们是在局域网的服务器上部署的rancher server,如果我们在其他电脑上的浏览器上访问rancher 服务的话,需要在对应的电脑hosts文件配置我们的rancher 域名及ip
如下图:

6.4 在已经配置好的hosts文件电脑浏览器上访问rancher
浏览器输入:https://rancher.test.com

大功告成

有关k3s 搭建高可用rancher的更多相关文章

  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 - self 在 Rails 模型中的值(value)是什么?为什么没有明显的实例方法可用? - 2

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

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

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

  4. ruby-on-rails - 是否有类似 'with_indifferent_access' 的数组可用于包含? - 2

    我尝试在我的应用中只使用:symbols作为关键词。我尝试在:symbol=>logic或string=>UI/languagespecific之间做出严格的决定但我也得到了每个JSON的一些“值”(即选项等),因为JSON中没有:symbols,所以我调用的所有哈希都具有“with_indifferent_access”属性。但是:数组是否有相同的东西?像那样a=['std','elliptic',:cubic].with_indifferent_accessa.include?:std=>true?编辑:将rails添加到标签 最佳答案

  5. ruby - 哪些 IDE 可用于 jRuby? - 2

    我进行了一些谷歌搜索,似乎缺少用于jRuby的IDE。我读过TextMate和Sublime,但它们不提供调试或代码完成功能。有人可以提出建议吗(或者这项技术还处于起步阶段)? 最佳答案 有几个选项;我更喜欢JetBrains'IntelliJ(RubyMine).AptanahasanEclipseplugin.NetBeansusedtohaveofficialsupport,不确定currentstate是什么是。 关于ruby-哪些IDE可用于jRuby?,我们在StackOve

  6. ruby-on-rails - 如果没有可用标签,则运行标记规范或全部 - 2

    我将guard与rspec和cucumber一起使用。要连续运行选定的规范,我只需使用focus标记来确定我要处理的内容。但问题是,如果没有带有该标签的规范,我想运行所有规范。我该怎么做?注意::我知道所有RSpec选项。因此,请仅在阅读问题后回复。 最佳答案 我通过以下配置实现了您描述的行为:#torunonlyspecificspecs,add:focustothespec#describe"foo",:focusdo#OR#it"shouldfoo",:focusdoconfig.treat_symbols_as_metada

  7. ruby-on-rails - Controller 中的实例变量如何可用于 Rails 中的 View - 2

    我从事Rails已有一段时间,并且刚刚开始深入研究Ruby元编程,Rails从中获得了强大的力量。我真的想不通这个,这让我发疯。Controller中的实例变量如何提供给Rails中的View(与View共享)?我知道它背后有一些元编程魔法,但我无法弄明白。在此先感谢您的所有帮助。 最佳答案 更新:原来接受的答案是错误的我现在将它留在下面以证明我错了。在获得足够多的反对票后,我决定研究这实际上是如何工作的。我最初的回答是在我对Rails还很陌生之后写的,并且是基于我使用过的其他MVC库(特别是:CodeIgniter)的工作方式的假

  8. ruby-on-rails - 为什么 Array.count 在开发模式下可用但在生产模式下不可用? - 2

    对于最近的一个项目,我有几个View是这样的代码:这在开发模式下工作得很好......我将它推出到生产模式并且它爆炸了,说count不是Array的有效方法。我将每个实例都改为使用Array#length,它似​​乎可以正常工作。1)这种行为差异的原因是什么?2)我应该注意开发模式和生产模式之间的任何其他令人兴奋的差异吗?道德:确保您的生产托管环境使用与本地开发环境相同的Ruby版本。:)谢谢汤姆 最佳答案 count方法仅在Ruby1.9及更高版本中可用。我建议您使用与服务器相同版本的Ruby以避免此类问题-1.9中发生了很多变化

  9. Ruby 获取可用的磁盘驱动器 - 2

    谁能告诉我如何在ruby​​中获取可用磁盘驱动器的列表?我正在创建一个打开的文件对话并且需要知道!提前致谢,嗯。 最佳答案 Brian给出的文章正确地陈述了以下代码:require'win32ole'file_system=WIN32OLE.new("Scripting.FileSystemObject")drives=file_system.Drivesdrives.eachdo|drive|puts"Availablespace:#{drive.AvailableSpace}"puts"Driveletter:#{drive.D

  10. ruby-on-rails - 是否有任何方法可用于查找对象的已更改属性? - 2

    我只想获取对象的已更改属性。是否有任何方法可以返回所有更新的属性? 最佳答案 鉴于您的问题中没有太多细节,我假设您指的是ActiveRecord对象。要查看所谓的“脏对象”的更改属性,您可以执行以下操作:User.changed#=>["name","email"]User.changes#=>{"name"=>["Joe","Joseph"]}如果您需要检查特定的属性,还有针对每个属性的方法。User.name_changed?#=>trueUser.name_change#=>["Joe","Joseph"]更多细节在这里:ht

随机推荐