当前位置: 首页 > news >正文

[rancher] rancher部署和使用的一些思考

最近因为工作需要,学习调研rancher的使用
k8s作为主流微服务部署的基础,已经逐渐在工作中普及。但是k8s dashboard用于生产管理,还是有所欠缺:我们需要一个k8s之上的管理平台。经过调研,目前rancher已经迭代开发至v2.8版本,有很好的社区基础和公司技术支持,决定深入研究下

部署

初始创建一台ubuntu22.04 虚拟机,安装docker (版本20.10.x)。之前我提到过k8s 1.24之后不再兼容docker,但是rancher(v2.7)仅仅是利用docker启动rancher镜像,容器启动后在容器内部启动k3s支撑local集群。所以如果在宿主机器上使用docker ps命令,仅仅只能看到一个rancher容器在运行;进入容器运行crictl命令,可以看到k3s集群

添加新集群

https://github.com/kubernetes-sigs/cri-tools/releases
从这里可以下载最新的crictl工具,方便查看containerd等容器
编辑/etc/crictl.yaml文件可以修改默认socket路径

添加新集群的节点不需要额外安装docker,但是需要保证磁盘空间足够:这次测试安装,就是磁盘空间不够导致cluster agent pod无法启动,rancher界面内一直提示集群处于"waiting for cluster agent to connect"的reconciling状态
(查了两天原因。因为crictl只能看到已经启动的容器,pending的看不到。后来无意中看到运行rancher自带kubectl的方法: /var/lib/rancher/rke2/bin/kubectl --kubeconfig /etc/rancher/rke2/rke2.yaml,这才定位到root cause。虽然耽误了时间,但是也对rancher创建集群的逻辑有了更深一层的理解)

删除集群

我测试的rancher版本是2.7.7,从rancher UI界面删除集群和machine,后端部署的 k8s集群并不会受到影响。(据同事分享的信息,2.5.x版本,从界面删除集群,后端k8s集群也会被清空。我这里没有做测试:因为我个人喜欢用最新版本,以后大概率不会去用2.5)
如果需要清除后端部署k8s集群,需要手工登陆节点执行rancher提供的专门清理脚本:

1. 卸载agent服务脚本:

# rancher-system-agent-uninstall.sh
# which rancher-system-agent-uninstall.sh
/usr/local/bin/rancher-system-agent-uninstall.sh

直接执行就行。使用rancher的create功能创建集群时候,该脚本也会自动安装到/usr/local/bin路径下。所以直接在shell下运行即可

2. 卸载rke2集群

# which rke2-uninstall.sh
/usr/local/bin/rke2-uninstall.sh

同上,执行rke2-uninstall.sh即可删除rke2集群

3. 删除数据/配置文件

rm -rf /etc/ceph \/etc/cni \/etc/kubernetes \/etc/rancher \/opt/cni \/opt/rke \/run/secrets/kubernetes.io \/run/calico \/run/flannel \/var/lib/calico \/var/lib/etcd \/var/lib/cni \/var/lib/kubelet \/var/lib/rancher\/var/log/containers \/var/log/kube-audit \/var/log/pods \/var/run/calico

其实在第二步的脚本中,已经包括部分删除数据/配置的步骤,但是有些目录没删干净(例如/var/lib/rancher)

4. reboot 节点

经过以上四步,基本可以干净删除k8s(rke2)集群环境

5. CLI界面管理cluster

想直接在node上面利用cli管理新创建的集群,需要使用rke自带的kubectl和配置文件
例如:

/var/lib/rancher/rke2/bin/kubectl --kubeconfig /etc/rancher/rke2/rke2.yaml get nodes

为了不每次输入这么长的路径,我们可以按照k8s传统配置方法移动kubectl和rke2.yaml路径:

cp  /var/lib/rancher/rke2/bin/kubectl /usr/local/bin/
mkdir -p $HOME/.kube
cp /etc/rancher/rke2/rke2.yaml .kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

完成上述操作后,就可以方便的使用 kubectl get nodes 等命令了

root@k8s-master:~# kubectl get nodes
NAME         STATUS   ROLES                              AGE   VERSION
k8s-master   Ready    control-plane,etcd,master,worker   12d   v1.26.8+rke2r1
参考文档:
  1. https://ranchermanager.docs.rancher.com/how-to-guides/new-user-guides/manage-clusters/clean-cluster-nodes

相关文章:

  • Bean 作用域和生命周期
  • 「图像 merge」无中生有制造数据
  • pytorch复现_NMS
  • 11.1 知识总结(JavaScript)
  • 大数据之LibrA数据库系统告警处理(ALM-12007 进程故障)
  • web3:智能合约浏览器版本的 IDE - remix 使用教程
  • R语言在生态环境领域中的实践技术应用
  • 牛客网刷题-(9)
  • android下的app性能测试应主要针对那些方面,如何开展?
  • [.NET]桃源网络硬盘 v7.4
  • MySQL - 系统库之 sys
  • 【Python 千题 —— 基础篇】乘法计算
  • [SpringCloud | Linux] CentOS7 部署 SpringCloud 微服务
  • 四级核心词汇
  • 【C/C++】空指针访问成员函数
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Angular6错误 Service: No provider for Renderer2
  • C学习-枚举(九)
  • in typeof instanceof ===这些运算符有什么作用
  • JavaScript对象详解
  • java中的hashCode
  • js继承的实现方法
  • nginx 配置多 域名 + 多 https
  • redis学习笔记(三):列表、集合、有序集合
  • windows下如何用phpstorm同步测试服务器
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 和 || 运算
  • 经典排序算法及其 Java 实现
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 学习Vue.js的五个小例子
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 异常机制详解
  • 用Canvas画一棵二叉树
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 我们雇佣了一只大猴子...
  • ​力扣解法汇总946-验证栈序列
  • #Java第九次作业--输入输出流和文件操作
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (145)光线追踪距离场柔和阴影
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • .“空心村”成因分析及解决对策122344
  • .Net 6.0 处理跨域的方式
  • .net core 6 集成和使用 mongodb
  • .Net MVC4 上传大文件,并保存表单
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .NET处理HTTP请求
  • .NET连接数据库方式
  • .NET与 java通用的3DES加密解密方法
  • /var/lib/dpkg/lock 锁定问题