问题实例

待解决问题

RKE 问题

  • Centos 启动 RKE 集群还存在用户权限问题,无法使用 root 安装。详见:https://rancher2.docs.rancher.cn/docs/rke/os/_index#rhel%E3%80%81oel%E3%80%81centos
  • kube-proxy、kube-scheduler、kube-controller-manager、kube-apiserver、etcd 这些集群组件,无守护,不是通过 kubelet 的静态 pod 拉起。如果容器被停掉,则无法自动恢复。
  • ube-scheduler、kube-controller-manager 的 https 端口无法使用,证书有问题。

K3S 问题

Rancher 问题

  • rancher 崩溃或数据丢失,会导致的问题
  • 通过 rancher 创建的集群无法添加节点,无法升级,所有关于 kubeadm 可以使用的东西都无法使用。就算通过 kubelet 手动添加也不行。
  • rancher 部署在原生 k8s 集群上入侵行太强,会创建几十个 CRD。当删除的时候,还无法正常删除,只能删除其垃圾回收机制中的 finalizers 字段才可以。
  • rancher 会为集群中每个 namespace 添加注释以及 finalizers,包括 kube-system,issuer 详见 #14715。如果想要自己删除 ns,则会被卡住,因为 ns 在等待 controller.cattle.io/namespace-auth
  • 导入集群清理 rancher 不干净,留下非常非常多的 rolebing、clusterrole、clusterbinding,很多都是操作 ns 所需的。

Agent 无法连接 Rancher server

https://rancher2.docs.rancher.cn/docs/faq/install/_index#agent-%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5-rancher-server

ERROR: https://x.x.x.x/ping is not accessible (Failed to connect to x.x.x.x port 443: Connection timed out)

  1. ERROR: https://x.x.x.x/ping is not accessible (Failed to connect to x.x.x.x port 443: Connection timed out)

在 cattle-cluster-agent 或 cattle-node-agent 中出现以上错误,代表 agent 无法连接到 rancher server,请按照以下步骤排查网络连接:

  • 从 agent 宿主机访问 rancher server 的 443 端口,例如:telnet x.x.x.x 443

  • 从容器内访问 rancher server 的 443 端口,例如:telnet x.x.x.x 443

ERROR: https://rancher.my.org/ping is not accessible (Could not resolve host: rancher.my.org)

  1. ERROR: https://rancher.my.org/ping is not accessible (Could not resolve host: rancher.my.org)

在 cattle-cluster-agent 或 cattle-node-agent 中出现以上错误,代表 agent 无法通过域名解析到 rancher server,请按照以下步骤进行排查网络连接:

  • 从容器内访问通过域名访问 rancher server,例如:ping rancher.my.org

这个问题在内网并且无 DNS 服务器的环境下非常常见,即使在/etc/hosts 文件中配置了映射关系也无法解决,这是因为 cattle-node-agent 从宿主机的/etc/resolv.conf 中继承 nameserver 用作 dns 服务器。

所以要解决这个问题,有两个办法:

  1. 可以在环境中搭建一个 dns 服务器,配置正确的域名和 IP 的对应关系,然后将每个节点的 nameserver 指向这个 dns 服务器。

  2. 使用 HostAliases,向 pod 内添加 hosts 条目:

kubectl -n cattle-system patch  deployments cattle-cluster-agent --patch '{
    "spec": {
        "template": {
            "spec": {
                "hostAliases": [
                    {
                      "hostnames":
                      [
                        "{{ rancher_server_hostname }}"
                      ],
                      "ip": "{{ rancher_server_ip }}"
                    }
                ]
            }
        }
    }
}'
kubectl -n cattle-system patch  daemonsets cattle-node-agent --patch '{
 "spec": {
     "template": {
         "spec": {
             "hostAliases": [
                 {
                    "hostnames":
                      [
                        "{{ rancher_server_hostname }}"
                      ],
                    "ip": "{{ rancher_server_ip }}"
                 }
             ]
         }
     }
 }
}'

github.com/rancher/norman/controller/generic_controller.go:237: Failed to list *v1.LimitRange: Get https://10.96.0.1:443/api/v1/limitranges?resourceVersion=4897&timeout=30s: context deadline exceeded

https://github.com/rancher/rancher/issues/27736