|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
故障排除 SUSE Rancher Prime Kubernetes 集群中的 服务器
本节描述了如何在 Kubernetes 集群上故障排除 Rancher 的安装。
相关名称空间
大多数故障排除将在这 3 个名称空间中的对象上进行。
-
cattle-system-rancher部署和 pods。 -
traefik- Ingress 控制器 pods 和服务。 -
cert-manager-cert-managerpods。
检查 Rancher 是否正在运行
使用 kubectl 检查 cattle-system 系统名称空间,查看 Rancher pods 是否处于运行状态。
kubectl -n cattle-system get pods NAME READY STATUS RESTARTS AGE pod/rancher-784d94f59b-vgqzh 1/1 Running 0 10m
如果状态不是 Running,请在 pod 上运行 describe 并检查事件。
kubectl -n cattle-system describe pod ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 11m default-scheduler Successfully assigned rancher-784d94f59b-vgqzh to localhost Normal SuccessfulMountVolume 11m kubelet, localhost MountVolume.SetUp succeeded for volume "rancher-token-dj4mt" Normal Pulling 11m kubelet, localhost pulling image "rancher/rancher:v2.0.4" Normal Pulled 11m kubelet, localhost Successfully pulled image "rancher/rancher:v2.0.4" Normal Created 11m kubelet, localhost Created container Normal Started 11m kubelet, localhost Started container
检查 Rancher 日志
使用 kubectl 列出 pods。
kubectl -n cattle-system get pods NAME READY STATUS RESTARTS AGE pod/rancher-784d94f59b-vgqzh 1/1 Running 0 10m
使用 kubectl 和 pod 名称列出 pod 的日志。
kubectl -n cattle-system logs -f rancher-784d94f59b-vgqzh
证书 CN 是 "Kubernetes Ingress Controller Fake Certificate"
使用您的浏览器检查证书详细信息。如果显示的通用名称是 "Kubernetes Ingress Controller Fake Certificate",那么在读取或颁发您的 SSL 证书时可能出现了问题。
|
如果您使用 LetsEncrypt 来颁发证书,有时颁发证书可能需要几分钟。 |
检查 cert-manager 颁发的证书(Rancher 生成或 LetsEncrypt)是否存在问题。
cert-manager 有 3 个部分。
-
cert-managerpod 在cert-manager名称空间中。 -
Issuer对象在cattle-system名称空间中。 -
Certificate对象在cattle-system名称空间中。
向后工作,对每个对象执行 kubectl describe 并检查事件。您可以追踪可能缺失的内容。
例如,Issuer 存在问题:
kubectl -n cattle-system describe certificate ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning IssuerNotReady 18s (x23 over 19m) cert-manager Issuer rancher not ready
kubectl -n cattle-system describe issuer ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning ErrInitIssuer 19m (x12 over 19m) cert-manager Error initializing issuer: secret "tls-rancher" not found Warning ErrGetKeyPair 9m (x16 over 19m) cert-manager Error getting keypair for CA issuer: secret "tls-rancher" not found
检查您自己的 SSL 证书是否存在问题。
您的证书直接应用于 cattle-system 命名空间中的 Ingress 对象。
检查 Ingress 对象的状态,看看它是否准备好。
kubectl -n cattle-system describe ingress
如果它已准备好而 SSL 仍然无法工作,您可能有一个格式错误的证书或密钥。
检查 nginx-ingress-controller 日志。由于 nginx-ingress-controller 在其 pod 中有多个容器,您需要指定容器的名称。
kubectl logs -n traefik traefik-6b94b8b688-bngw2 ... W0705 23:04:58.240571 7 backend_ssl.go:49] error obtaining PEM from secret cattle-system/tls-rancher-ingress: error retrieving secret cattle-system/tls-rancher-ingress: secret cattle-system/tls-rancher-ingress was not found
没有找到类型为 "Issuer" 的匹配项。
您选择的 SSL 配置选项要求在安装 Rancher 之前安装 cert-manager,否则会显示以下错误:
Error: validation failed: unable to recognize "": no matches for kind "Issuer" in version "certmanager.k8s.io/v1alpha1"
安装 cert-manager 并再次尝试安装 Rancher。
Canal Pods 显示已准备好 2/3
此问题最常见的原因是节点之间未开启8472/UDP端口。检查您的本地防火墙、网络路由或安全组。
一旦网络问题解决,canal pods 应该超时并重启以建立连接。
连接 /var/run/docker.sock 失败:ssh:被拒绝:管理上禁止(打开失败)
此错误的一些原因包括:
-
指定的用户没有权限访问 Docker 套接字。可以通过登录到主机并运行命令
docker ps来检查:$ ssh user@server user@server$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
请参见 以非根用户管理 Docker 如何正确设置。
-
当使用 RedHat/CentOS 作为操作系统时,您不能使用用户
root连接到节点,因为 Bugzilla #1527565。您需要添加一个单独的用户并配置其访问 Docker 套接字。请参见 以非根用户管理 Docker 如何正确设置。 -
SSH 服务器版本不是 6.7 或更高版本。这对于套接字转发的工作是必要的,套接字转发用于通过 SSH 连接到 Docker 套接字。可以使用
sshd -V在您连接的主机上检查,或使用 netcat:$ nc xxx.xxx.xxx.xxx 22 SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.10
连接 ssh 使用地址 [xxx.xxx.xxx.xxx:xx] 失败:ssh:握手失败:ssh:无法验证,尝试的方法 [none publickey],没有支持的方法。
指定为 ssh_key_path 的密钥文件不正确,无法访问节点。仔细检查您是否为节点指定了正确的 ssh_key_path,以及您是否指定了正确的用户进行连接。
代理报告 TLS 错误。
使用 Rancher 时,您可能会遇到来自 fleet-agent、system-agent 或 cluster-agent 的错误消息,例如以下消息:
tls: failed to verify certificate: x509: failed to load system roots and no roots provided; readdirent /dev/null: not a directory
当 Rancher 配置为将 agent-tls-mode 设置为 strict 时,但在 cacert 设置中找不到 cacerts,就会发生这种情况。要解决此问题,请将 agent-tls-mode 设置为 system-store,或按照 添加 TLS 密钥 中的说明上传 Rancher 的 CA。
新的集群部署卡在“等待代理检查”中。
当 Rancher 将 agent-tls-mode 设置为 strict 时,新集群可能无法配置,并报告通用的“等待代理检查”错误消息。根本原因与上述 TLS 错误的情况类似 - Rancher 的代理无法确定 Rancher 正在使用哪个 CA(或无法验证 Rancher 的证书是否确实由指定的证书颁发机构签署)。
要解决此问题,请将 agent-tls-mode 设置为 system-store 或按照 添加 TLS 密钥 中的说明上传 Rancher 的 CA。