本文永久链接: 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 控制器服务默认监听了 80443 端口。

因此,如果 Rancher server 单节点单容器安装时是通过 -p 80:80 -p 443:443 映射的容器端口,那么如果把 ranche server 所在的主机添加到 kubernetes 后将会出现端口冲突的问题。

针对这个问题,我们有两种方法处理:

  1. 修改 Rancher server 容器映射的端口。

    注意:如果集群已经创建好,此时修改映射端口将会导致 agent 服务无法访问 Rancher server。如果必须要修改映射端口,请参考文章进行处理:https://www.xtplayer.cn/rancher/replace-ip-domain/

  2. 修改 ingress 控制器的默认监听端口

    修改 ingress 控制器工作负载的 YAML 文件,在 args 参数中插入 --http-port=8880 --https-port=8443,或者在 Rancher ui 上修改,具体参考文档:自定义 http 和 https 端口

    • ingress 控制器中是用 Nginx 来提供负载均衡服务,Nginx 默认监听 80443 分别对应 httphttps,通过域名访问服务时候可以省略端口号,比如:http://wwww.test.com/a 或者 https://wwww.test.com/b

    • 更换端口后,访问则需要添加上具体的端口,比如:http://wwww.test.com:8880/a 或者 https://wwww.test.com:8443/b

删除或者停用了管理员,该如何恢复?

  1. 单节点安装

    docker exec -ti <container_id> ensure-default-admin
    New default admin user (user-xxxxx)
    New password for default admin user (user-xxxxx):
    <new_password>
  2. HA 安装

    HA 安装恢复方法与单节点安装方法相同,只是在 HA 安装架构下,一般是有多个 Rancher server Pod,所以需要先把 Rancher server Pod 数量缩减为 1,然后再按单节点安装恢复方法处理即可。

怎么样开启 Debug 模式?

  • 单节点安装

    1. 启用

      docker exec -ti <container_id> loglevel --set debug
      OK
      docker logs -f <container_id>
    2. 禁用

      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

导入集群 Rancher ui 无法查看到原有集群中的 Pod

Rancher UI 显示应用 Pod,是通过项目与命名空间绑定来进行过滤显示的。所以,如果命名空间不在某个项目下,则 Rancher UI 不会显示对应的应用 Pod。

项目与命名空间的关联,是通过命名空间上的注释来实现的。如果命名空间不是通过 Rancher UI 创建的,那么创建的命名空间不会带有对应的注释。比如导入的集群,原有的命名空间是通过 cli 命令行或者其他工具创建的,即使导入 Rancher 也不会自动创建对应的 注释

为了可以正常显示应用 Pod,需要通过 Rancher UI 把命名空间移动到对应的项目下,移动后则会自动为命名空间创建对应的注释。