Rancher 常见问题集锦
本文永久链接: https://www.xtplayer.cn/rancher/rancher-problem-sets/
Rancher server 管理员密码重置
请查参考链接:Rancher server 管理员密码重置
Rancher server 如何数据持久?
Rancher server 不管是单节点单容器安装,或者是多节点 Local kubernetes HA 安装,Rancher server 都是通过 kubernetes API 去写入数据,最后数据都是保存在 kubernetes 后端的数据存储服务中(etcd)。
在 v2.3.x 之前的 Rancher server 版本中,Rancher server 容器中运行了一个定制化的微型 kubernetes 集群。在 v2.3.x 及之后的 Rancher server 版本中,定制化的微型 kubernetes 集群更换成了 K3S 集群。
- Rancher server 单节点单容器安装
对于单节点单容器安装的 Rancher server,容器中的定制化微型 kubernetes 集群或者 K3S 集群会一并启动,然后 Rancher server 会去访问微型 kubernetes 集群或者 K3S 集群的 API 地址进行数据的读写,默认数据文件保存在容器的 /var/lib/Rancher
路径下。可以将此目录挂载到主机主机的某个位置,以保证数据不会丢失。
- Rancher server HA 安装
Local kubernetes 集群 Rancher server HA 安装,这种安装模式下 Rancher server 也是通过 Local kubernetes 集群的 API 地址进行数据读写,通过 Local kubernetes,数据被直接写入到了 kubernetes 后端的 ETCD 服务中。
Rancher server 单节点单容器安装场景下,如何在同一个主机上运行 Rancher server 和 Rancher-Agent?
默认情况下,Rancher 中创建的 kubernetes 集群,会在所有可调度的节点上安装 ingress 控制器服务。ingress 控制器服务默认是 host
网络模式,并且 ingress 控制器服务默认监听了 80
和 443
端口。
因此,如果 Rancher server 单节点单容器安装时是通过 -p 80:80 -p 443:443
映射的容器端口,那么如果把 ranche server 所在的主机添加到 kubernetes 后将会出现端口冲突的问题。
针对这个问题,我们有两种方法处理:
修改 Rancher server 容器映射的端口。
注意:如果集群已经创建好,此时修改映射端口将会导致 agent 服务无法访问 Rancher server。如果必须要修改映射端口,请参考文章进行处理:https://www.xtplayer.cn/rancher/replace-ip-domain/
修改 ingress 控制器的默认监听端口
修改 ingress 控制器工作负载的 YAML 文件,在
args
参数中插入--http-port=8880 --https-port=8443
,或者在 Rancher ui 上修改,具体参考文档:自定义 http 和 https 端口 。ingress 控制器中是用 Nginx 来提供负载均衡服务,Nginx 默认监听
80
和443
分别对应http
和https
,通过域名访问服务时候可以省略端口号,比如:http://wwww.test.com/a
或者https://wwww.test.com/b
。更换端口后,访问则需要添加上具体的端口,比如:
http://wwww.test.com:8880/a
或者https://wwww.test.com:8443/b
删除或者停用了管理员,该如何恢复?
单节点安装
docker exec -ti <container_id> ensure-default-admin
New default admin user (user-xxxxx)
New password for default admin user (user-xxxxx):
<new_password>HA 安装
HA 安装恢复方法与单节点安装方法相同,只是在 HA 安装架构下,一般是有多个 Rancher server Pod,所以需要先把 Rancher server Pod 数量缩减为 1,然后再按单节点安装恢复方法处理即可。
怎么样开启 Debug 模式?
单节点安装
启用
docker exec -ti <container_id> loglevel --set debug
OK
docker logs -f <container_id>禁用
docker exec -ti <container_id> loglevel --set info
OK
HA 安装
HA 安装启用 Debug 与 单节点安装启用 Debug 模式相同,只需在要启用的 Pod 中运行命令。
ClusterIP 无法 ping 通?
在 kube-proxy 使用 iptables 的 kubernetes 集群中,ClusterIP 是一个虚拟 IP,不会响应 ping,它仅作为 iptables 转发的目标规则。测试 ClusterIP 配置是否正确的最好方法是使用
curl
来访问 Pod IP 和端口以查看它是否响应。在 kube-proxy 使用 ipvs 的 kubernetes 集群中,ClusterIP 可以 ping 通。
为什么 L4 层负载均衡 svc 处于“挂起”状态?
L4 层负载均衡器创建为 type:LoadBalancer
,在 Kubernetes 中,这需要云提供商或控制器能够满足这些请求,否则这些将永远处于“挂起”状态。 了解更多 云提供商 或者 Create External Load Balancer
节点的 IP 地址发生了变化,该如何恢复?
节点需要配置静态 IP(或通过 DHCP 保留 IP)。如果节点的 IP 已更改,则必须将其从集群中删除。删除后,Rancher 会将集群更新为正确的状态。如果集群不再处于 Provisioning
状态,则已经从集群中删除该节点。当节点的 IP 地址发生变化时,Rancher 失去了与节点的连接,因此无法正常清理节点。请参阅 清理集群节点 以清除节点。
从集群中删除节点并清除节点后,您可以将节点重新添加到集群。
如何查询 ssl 证书与域名或者 IP 的对应关系?
通过以下命令可以查看到 ssl 证书绑定的域名或者 ip。
openssl x509 -noout -in cert.pem -text | grep DNS |
404 - default backend
- 在通过 helm 安装 Rancher server 后,可能通过域名访问会提示
404 - default backend
。出现此问题后,请检查安装 Rancher server 时指定的域名与创建 ssl 证书时绑定的域名时候相同。 - 检查创建的 ssl 证书密文对应的证书是否正确。
- 如果是权威 CA 机构颁发的授信 SSL 证书,请检查中间证书是否与 cert 证书放在一起,参考文档:https://www.xtplayer.cn/rancher/install/ha-authority-ssl-ingress/#%E5%88%9B%E5%BB%BA-k8s-ssl-%E5%AF%86%E6%96%87。
导入集群 Rancher ui 无法查看到原有集群中的 Pod
Rancher UI 显示应用 Pod,是通过项目与命名空间绑定来进行过滤显示的。所以,如果命名空间不在某个项目下,则 Rancher UI 不会显示对应的应用 Pod。
项目与命名空间的关联,是通过命名空间上的注释来实现的。如果命名空间不是通过 Rancher UI 创建的,那么创建的命名空间不会带有对应的注释。比如导入的集群,原有的命名空间是通过 cli 命令行或者其他工具创建的,即使导入 Rancher 也不会自动创建对应的 注释。
为了可以正常显示应用 Pod,需要通过 Rancher UI 把命名空间移动到对应的项目下,移动后则会自动为命名空间创建对应的注释。