共计 5410 个字符,预计需要花费 14 分钟才能阅读完成。
这篇文章主要介绍“Rancher Server 常见的问题有哪些”,在日常操作中,相信很多人在 Rancher Server 常见的问题有哪些问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Rancher Server 常见的问题有哪些”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!
1、Docker 运行 Rancher Server 容器应该注意什么?
需要注意运行 rancher server 容器时,不要使用 host 模式。程序中有些地方定义的是 localhost 或者 127.0.0.1,如果 容器网络设置为 host,将会去访问宿主机资源,因为宿主机并没有相应资源,rancher server 容器启动就出错。
PS:docker 命令中,如果使用了 --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:// rancher-server-ip :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 数据库。
13、管理员密码忘记了,我该如何重置管理员密码?
如果你的身份认证出现问题(例如管理员密码忘记),则可能无法访问 Rancher。要重新获得对 Rancher 的访问权限,你需要在数据库中关闭访问控制。为此,你需要访问运行 Rancher Server 的主机。
ps:假设在重置访问控制之前有创建过其他用户,那么在认证方式没有变化的情况下,重置访问控制除了超级管理员(第一个被创建的管理员,ID 为 1a1),其他用户账号信息不会受影响。
假设数据库为 rancher 内置数据库
docker exec -it rancher_server_container_ID mysql
注意:这个 rancher_server_container_ID 是具有 Rancher 数据库的容器。如果你升级并创建了一个 Rancher 数据容器,则需要使用 Rancher 数据容器的 ID 而不是 Rancher Server 容器,rancher 内置数据库默认密码为空。
选择 Cattle 数据库。
mysql use cattle;
查看 setting 表。
mysql select * from setting;
更改 api.security.enabled 为 false,并清除 api.auth.provider.configured 的值。
确认更改在 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 会立即更新。
到此,关于“Rancher Server 常见的问题有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!