FAQ宝典之Rancher Server

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介:

Rancher FAQ宝典系列来袭,Rancher Server相关的常见问题,本文一网打尽。

1、Docker运行Rancher Server容器应该注意什么?

需要注意运行rancher server容器时,不要使用host模式。程序中有些地方定义的是localhost或者127.0.0.1,如果容器网络设置为host,将会去访问宿主机资源,因为宿主机并没有相应资源,rancher server容器启动就出错。

PSdocker命令中,如果使用了 --network host参数,那后面再使用-p 8080:8080 就不会生效。
docker run -d -p 8080:8080 rancher/server:stable

此命令仅适用于单机测试环境,如果要生产使用Rancher server,请使用外置数据库(mysql)或者通过

-v /xxx/mysql/:/var/lib/mysql -v /xxx/log/:/var/log/mysql -v /xxx/cattle/:/var/lib/cattle

把数据挂载到宿主机上。如果用外置数据库,需提前对数据库做性能优化,以保证Rancher运行的最佳性能。

2、如何导出Rancher Server容器的内部数据库?

你可以通过简单的Docker命令从Rancher Server容器导出数据库。

docker exec <CONTAINER_ID_OF_SERVER> mysqldump cattle > dump.sql

3、我正在运行的Rancher是什么版本的?

Rancher的版本位于UI的页脚的左侧。如果你点击版本号,将可以查看其他组件的详细版本。

4、如果我没有在Rancher UI中删除主机而是直接删除会发生什么?

如果你的主机直接被删除,Rancher Server会一直显示该主机。主机会处于Reconnecting状态,然后转到Disconnected状态。你也可以通过添加主机再次把此节点添加到RANCHER集群,如果不在使用此节点,可以在UI中删除。

如果你有添加了健康检查功能的服务自动调度到状态Disconnected主机上,CATTLE会将这些服务重新调度到其他主机上。

PS:如果使用了标签调度,如果你有多台主机就有相同的调度标签,那么服务会调度到其他具有调度标签的节点上;如果选择了指定运行到某台主机上,那主机删除后你的应用将无法在其他主机上自动运行。

5、我如何在代理服务器后配置主机?

要在代理服务器后配置主机,你需要配置Docker的守护进程。详细说明参考在代理服务器后添加自定义主机

6、为什么同一主机在UI中多次出现?

宿主机上var/lib/rancher/state这个文件夹,这是Rancher用来存储用于标识主机的必要信息。

.registration_token中保存了主机的验证信息,如果里面的信息发生变化,RANCHER会认为这是一台新主机, 在你执行添加主机后,UI上将会出现另外一台相同的主机,第一台主机接着处于失联状态。

7、在哪能找到 Rancher Server 容器的详细日志?

运行docker logs可以查看在Rancher Server容器的基本日志。要获取更详细的日志,你可以进入到Rancher Server容器内部并查看日志文件。

进入 Rancher Server 容器内部
docker exec -it <container_id> bash

跳转到 Cattle 日志所在的目录下
cd /var/lib/cattle/logs/
cat cattle-debug.log

在这个目录里面会出现cattle-debug.log和cattle-error.log。如果你长时间使用此Rancher Server,你会发现我们每天都会创建一个新的日志文件。

8、将Rancher Server的日志复制到主机上

以下是将Rancher Server日志从容器复制到主机的命令。

docker cp <container_id>:/var/lib/cattle/logs /local/path

9、如果Rancher Server的IP改变了会怎么样?

如果更改了Rancher Server的IP地址,你需要用新的IP重新注册主机。

在Rancher中,点击系统管理->系统设置更新 Rancher Server的主机注册地址。注意必须包括Rancher Server暴露的端口号。默认情况下我们建议按照安装手册中使用8080端口。

主机注册更新后,进入基础架构->添加主机->自定义。添加主机的docker run命令将会更新。使用更新的命令,在Rancher Server的所有环境中的所有主机上运行该命令。

10、Rancher Server运行变得很慢,怎么去优化它?

很可能有一些任务由于某些原因而处于僵死状态,如果你能够用界面查看系统管理 -> 系统进程,你将可以看到Running中的内容,如果这些任务长时间运行(并且失败),则Rancher会最终使用太多的内存来跟踪任务。这使得Rancher Server处于了内存不足的状态。

为了使服务变为可响应状态,你需要添加更多内存。通常4GB的内存就够了。

你需要再次运行Rancher Server命令并且添加一个额外的选项-e JAVA_OPTS="-Xmx4096m"

docker run -d -p 8080:8080 --restart=unless-stopped -e JAVA_OPTS="-Xmx4096m" rancher/server

根据MySQL数据库的设置方式的不同,你可能需要进行升级才能添加该选项。

如果是由于缺少内存而无法看到系统管理 -> 系统进程的话,那么在重启Rancher Server之后,已经有了更多的内存。你现在应该可以看到这个页面了,并可以开始对运行时间最长的进程进行故障分析。

11、Rancher Server数据库数据增长太快

Rancher Server会自动清理几个数据库表,以防止数据库增长太快。如果对你来说这些表没有被及时清理,请使用API来更新清理数据的时间间隔。

在默认情况下,产生在2周以前的container_event和service_event表中的数据则数据会被删除。在API中的设置是以秒为单位的(1209600)。API中的设置为events.purge.after.seconds。

默认情况下,process_instance表在1天前产生的数据将会被删除,在API中的设置是以秒为单位的(86400)。API中的设置为process_instance.purge.after.seconds。

为了更新API中的设置,你可以跳转到http://&lt;rancher-server-ip&gt;:8080/v1/settings页面,搜索要更新的设置,点击links -> self跳转到你点击的链接去设置,点击侧面的“编辑”更改’值’。请记住,值是以秒为单位。

12、为什么Rancher Server升级失败导致数据库被锁定?

如果你刚开始运行Rancher并发现它被永久冻结,可能是liquibase数据库上锁了。在启动时,liquibase执行模式迁移。它的竞争条件可能会留下一个锁定条目,这将阻止后续的流程。

如果你刚刚升级,在Rancher Server日志中,MySQL数据库可能存在尚未释放的日志锁定。

....liquibase.exception.LockException: Could not acquire change log lock. Currently locked by <container_ID>

释放数据库锁

注意:请不要释放数据库锁,除非有相关日志锁的异常。如果是由于数据迁移导致升级时间过长,在这种情况下释放数据库锁,可能会使你遇到其他迁移问题。

如果你已根据升级文档创建了Rancher Server的数据容器,你需要exec到rancher-data容器中升级DATABASECHANGELOGLOCK表并移除锁,如果你没有创建数据容器,你用exec到包含有你数据库的容器中。

sudo docker exec -it <container_id> mysql 

一旦进入到 Mysql 数据库,你就要访问cattle数据库。

FAQ宝典之Rancher Server

13、管理员密码忘记了,我该如何重置管理员密码?

如果你的身份认证出现问题(例如管理员密码忘记),则可能无法访问Rancher。要重新获得对Rancher的访问权限,你需要在数据库中关闭访问控制。为此,你需要访问运行Rancher Server的主机。

ps:假设在重置访问控制之前有创建过其他用户,那么在认证方式没有变化的情况下,重置访问控制除了超级管理员(第一个被创建的管理员,ID为1a1),其他用户账号信息不会受影响。

  • 假设数据库为rancher内置数据库
docker exec -it <rancher_server_container_ID> mysql

注意: 这个&lt;rancher_server_container_ID&gt;是具有Rancher数据库的容器。如果你升级并创建了一个Rancher数据容器,则需要使用Rancher数据容器的ID而不是Rancher Server容器,rancher内置数据库默认密码为空。

  • 选择Cattle数据库。
mysql> use cattle;
  • 查看setting表。
mysql> select * from setting;
  • 更改api.security.enabled为false,并清除api.auth.provider.configured的值。

FAQ宝典之Rancher Server

  • 确认更改在setting表中是否生效。
mysql> select * from setting;

可能需要约1分钟才能在用户界面中关闭身份认证,然后你可以通过刷新网页来登陆没有访问控制的Rancher Server。

关闭访问控制后,任何人都可以使用UI/API访问Rancher Server。

刷新页面,在系统管理/访问控制 重新开启访问控制。重新开启访问控制填写的管理员用户名将会替换原有的超级管理员用户名(ID为1a1 )。

14、Rancher Compose Executor和Go-Machine-Service不断重启

在高可用集群中,如果你正在使用代理服务器后,如果rancher-compose-executor和go-machine-service不断重启,请确保你的代理使用正确的协议。

15、为什么在日志中看到Go-Machine-Service在不断重新启动?我该怎么办?

Go-machine-service是一种通过websocket连接到Rancher API服务器的微服务。如果无法连接,则会重新启动并再次尝试。如果你运行的是单节点的Rancher Server,它将使用你为主机注册地址来连接到Rancher API服务。检查从Rancher Sever容器内部是否可以访问主机注册地址。

docker exec -it <rancher-server_container_id> bash
在 Rancher-Server 容器内
curl -i <Host Registration URL you set in UI>/v1

你应该得到一个json响应。如果认证开启,响应代码应为401。如果认证未打开,则响应代码应为200。 验证Rancher API Server 能够使用这些变量,通过登录go-machine-service容器并使用你提供给容器的参数进行curl命令来验证连接:

docker exec -it <go-machine-service_container_id> bash
在go-machine-service 容器内
curl -i -u '<value of CATTLE_ACCESS_KEY>:<value of CATTLE_SECRET_KEY>' <value of CATTLE_URL>

你应该得到一个json响应和200个响应代码。如果curl命令失败,那么在go-machine-service和Rancher API server之间存在连接问题。如果curl命令没有失败,则问题可能是因为go-machine-service尝试建立websocket连接而不是普通的http连接。如果在go-machine-service和Rancher API服务器之间有代理或负载平衡,请验证代理是否支持websocket连接。

16、Rancher Catalog 多久同步一次

http://X.X.X.X/v1/settings/catalog.refresh.interval.seconds 默认300秒,可以修改,点setting会立即更新。



本文转自 RancherLabs 51CTO博客,原文链接:http://blog.51cto.com/12462495/2049725

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
小程序 前端开发
uniapp 小程序接入友盟 ,自定义事件携带参数
uniapp 小程序接入友盟 ,自定义事件携带参数
403 0
|
机器学习/深度学习 人工智能 监控
基于YOLOv8的多种水果种类识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
本项目基于YOLOv8与PyQt5开发,实现多种水果种类的高效识别。支持图像、视频及摄像头输入,具备批量检测、实时识别与高精度标注功能,模型轻量且部署简便,适用于边缘设备。配套完整源码、数据集与训练教程,开箱即用,适合学习与产业应用。
基于YOLOv8的多种水果种类识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
|
应用服务中间件 Linux nginx
Docker镜像-基于DockerFile制作yum版nginx镜像
本文介绍了如何使用Dockerfile制作一个基于CentOS 7.6.1810的yum版nginx镜像,并提供了详细的步骤和命令。
370 20
|
监控 安全 网络协议
这10款网络扫描工具,是个网工,都想全部安装!
这10款网络扫描工具,是个网工,都想全部安装!
2267 1
|
敏捷开发 定位技术 开发者
poc Proof of Concept
Proof of Concept(简称 POC)是概念验证的意思。在软件开发领域,POC 通常用于验证某个想法或概念是否可行。它通常是一个小型项目或原型,可以通过实际操作来证明某个想法或技术的有效性。POC 可以帮助开发者在项目开始之前确定技术的可行性,减少开发过程中的风险。
2471 3
轻松玩转人物风格迁移!DualStyleGAN让你一键生成各种风格人物图片!【一个有趣的开源项目】
轻松玩转人物风格迁移!DualStyleGAN让你一键生成各种风格人物图片!【一个有趣的开源项目】
|
存储 JavaScript 网络安全
通过nodejs实现局域网内文件互传以及服务安装
前段时间学习到了nodejs的net模块这部分,正好想实现一个局域网内的文件下载小demo,噔噔噔噔... 兴趣推动 ,马上搞一搞。
通过nodejs实现局域网内文件互传以及服务安装
|
负载均衡 应用服务中间件 API
.NET Core微服务之路:(纯干货)基于gRPC服务发现与服务治理的方案
  重温最少化集群搭建,我相信很多朋友都已经搭建出来,基于Watch机制也实现了出来,相信也有很多朋友有了自己的实现思路,但是,很多朋友有个疑问,我API和服务分离好了,怎么通过服务中心进行发现呢,这个过程是通过什么来实现的呢,本篇我们就来介绍这个“调用过程”。
8831 0
|
JavaScript 前端开发
js实现移动端图片预览:手势缩放, 手势拖动,双击放大...
原文:js实现移动端图片预览:手势缩放, 手势拖动,双击放大... 前言本文将介绍如何通过js实现移动端图片预览,包括图片的 预览模式,手势缩放,手势拖动,双击放大等基本功能; 扫码查看示例效果: 代码地址http://pangyongsheng.github.io/imgPreview/ 一、功能介绍   图片预览主要有以下几个功能点组成: 监听图片点击事件,进入图片预览模式 自定义手势事件, (双指缩放,滑动,双击。
3560 0