本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

技术常见问题解答

我如何重置管理员密码?

Docker 安装:

$ docker exec -ti <container_id> reset-password
New password for default administrator (user-xxxxx):
<new_password>

Kubernetes 安装(Helm):

$ KUBECONFIG=./kube_config_cluster.yml
$ kubectl --kubeconfig $KUBECONFIG -n cattle-system exec $(kubectl --kubeconfig $KUBECONFIG -n cattle-system get pods -l app=rancher --no-headers | head -1 | awk '{ print $1 }') -c rancher -- reset-password
New password for default administrator (user-xxxxx):
<new_password>

Kubernetes 安装(Helm - 适用于 Rancher Prime v2.13.1):

$ KUBECONFIG=./kube_config_cluster.yml
$ kubectl --kubeconfig $KUBECONFIG -n cattle-system exec $(kubectl --kubeconfig $KUBECONFIG -n cattle-system get pods -l app=rancher-prime --no-headers | head -1 | awk '{ print $1 }') -c rancher-prime -- reset-password
New password for default administrator (user-xxxxx):
<new_password>

我删除/停用了最后一个管理员,如何修复?

Docker 安装:

$ docker exec -ti <container_id> ensure-default-admin
New default administrator (user-xxxxx)
New password for default administrator (user-xxxxx):
<new_password>

Kubernetes 安装(Helm):

$ KUBECONFIG=./kube_config_cluster.yml
$ kubectl --kubeconfig $KUBECONFIG -n cattle-system exec $(kubectl --kubeconfig $KUBECONFIG -n cattle-system get pods -l app=rancher | grep '1/1' | head -1 | awk '{ print $1 }') -- ensure-default-admin
New password for default administrator (user-xxxxx):
<new_password>

Kubernetes 安装(Helm - 适用于 Rancher Prime v2.13.1):

$ KUBECONFIG=./kube_config_cluster.yml
$ kubectl --kubeconfig $KUBECONFIG -n cattle-system exec $(kubectl --kubeconfig $KUBECONFIG -n cattle-system get pods -l app=rancher-prime | grep '1/1' | head -1 | awk '{ print $1 }') -- ensure-default-admin
New password for default administrator (user-xxxxx):
<new_password>

如何启用调试日志记录?

我的 ClusterIP 对 ping 没有响应

ClusterIP 是一个虚拟 IP,不会对 ping 响应。测试 ClusterIP 是否配置正确的最佳方法是使用 curl 访问该 IP 和端口,查看是否有响应。

我可以在哪里管理节点模板?

可以通过打开您的账户菜单(右上角)并选择 Node Templates 来访问节点模板。

为什么我的 Layer-4 负载均衡器处于 Pending 状态?

Layer-4 负载均衡器被创建为 type: LoadBalancer。在 Kubernetes 中,这需要一个云提供商或控制器来满足这些请求,否则它们将永远处于 Pending 状态。更多信息可以在 云提供商创建外部负载均衡器 中找到。

Rancher 的状态存储在哪里?

  • Docker 安装:在 rancher/rancher 容器的嵌入式 etcd 中,位于 /var/lib/rancher

  • Kubernetes 安装:默认位置在创建以运行 Rancher 的相应 RKE2/K3s 集群的 /var/lib/rancher/rke2/var/lib/rancher/k3s 目录中。

如何确定支持的 Docker 版本?

我们采用上游 Kubernetes 发布中经过验证的 Docker 版本。验证的版本可以在 Kubernetes 发布的 CHANGELOG.md 中的 外部依赖 下找到。

我如何访问由 Rancher 创建的节点?

可以通过 节点 视图下载访问由 Rancher 创建的节点的 SSH 密钥。选择您想要访问的节点,点击行末的垂直 ⋮ 按钮,然后选择 下载密钥,如下图所示。

下载密钥

解压下载的 zip 文件,并使用文件 id_rsa 连接到您的主机。确保使用正确的用户名(rancherdocker 用于 RancherOS,ubuntu 用于 Ubuntu,ec2-user 用于 Amazon Linux)

$ ssh -i id_rsa user@ip_of_node

我如何在 Rancher 中自动化任务 X?

用户界面由静态文件组成,并基于 API 的响应工作。这意味着您可以在用户界面中执行的每个操作/任务,都可以通过 API 自动化。有两种方式可以实现此操作:

节点的 IP 地址发生变化,我该如何恢复?

节点需要配置静态 IP(或通过 DHCP 保留的 IP)。如果节点的 IP 已更改,您需要将其从集群中移除并重新添加。移除后,Rancher 将更新集群到正确的状态。如果集群不再处于 Provisioning 状态,节点将从集群中移除。

当节点的 IP 地址发生变化时,Rancher 失去了与该节点的连接,因此无法正确清理该节点。请参见清理集群节点以清理该节点。

当节点从集群中移除并且节点被清理后,您可以将该节点重新添加到集群中。

如何在 Rancher 启动的 Kubernetes 集群中为 Kubernetes 组件添加更多参数/绑定/环境变量?

您可以通过相应的 RKE2 配置文件K3s 配置文件 添加更多参数/绑定/环境变量。

我如何检查我的证书链是否有效?

使用 openssl verify 命令来验证您的证书链:

SSL_CERT_DIRSSL_CERT_FILE 配置到一个虚拟位置,以确保手动验证时不会使用操作系统安装的证书。

SSL_CERT_DIR=/dummy SSL_CERT_FILE=/dummy openssl verify -CAfile ca.pem rancher.yourdomain.com.pem
rancher.yourdomain.com.pem: OK

如果您收到错误 unable to get local issuer certificate,则链不完整。这通常意味着有一个中间CA证书颁发了您的服务器证书。如果您已经拥有此证书,可以像下面所示那样在证书验证中使用它:

SSL_CERT_DIR=/dummy SSL_CERT_FILE=/dummy openssl verify -CAfile ca.pem -untrusted intermediate.pem rancher.yourdomain.com.pem
rancher.yourdomain.com.pem: OK

如果您成功验证了您的证书链,则应在服务器证书中包含所需的中间 CA 证书,以完成与 Rancher 的任何连接的证书链(例如,通过 Rancher 代理)。服务器证书文件中证书的顺序应首先是服务器证书本身(`rancher.yourdomain.com.pem`的内容),然后是中间 CA 证书(`intermediate.pem`的内容)。

-----BEGIN CERTIFICATE-----
%YOUR_CERTIFICATE%
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
%YOUR_INTERMEDIATE_CERTIFICATE%
-----END CERTIFICATE-----

如果在验证过程中仍然出现错误,您可以使用以下命令检索服务器证书的主题和颁发者:

openssl x509 -noout -subject -issuer -in rancher.yourdomain.com.pem
subject= /C=GB/ST=England/O=Alice Ltd/CN=rancher.yourdomain.com
issuer= /C=GB/ST=England/O=Alice Ltd/CN=Alice Intermediate CA

我如何检查我的服务器证书中的`Common Name`和`Subject Alternative Names`?

尽管在技术上需要在`Subject Alternative Names`中有一个条目,但在`Common Name`和`Subject Alternative Names`中都有主机名可以与旧版浏览器/应用程序实现最大兼容性。

检查`Common Name`:

openssl x509 -noout -subject -in cert.pem
subject= /CN=rancher.my.org

检查`Subject Alternative Names`:

openssl x509 -noout -in cert.pem -text | grep DNS
                DNS:rancher.my.org

当节点失败时,为什么需要超过5分钟才能重新调度一个pod?

这由于以下默认Kubernetes设置的组合:

  • kubelet

    • node-status-update-frequency:指定kubelet向主节点发布节点状态的频率(默认10秒)

  • kube-controller-manager

    • node-monitor-period:在 NodeController 中同步 NodeStatus 的时间(默认 5 秒)

    • node-monitor-grace-period:我们允许运行的节点在标记为不健康之前无响应的时间(默认 40 秒)

    • pod-eviction-timeout:在失败节点上删除 pods 的宽限期(默认 5 分钟 0 秒)

有关这些设置的更多信息,请参见 Kubernetes: kubeletKubernetes: kube-controller-manager

在 Kubernetes v1.13 中,TaintBasedEvictions 功能默认启用。有关更多信息,请参见 Kubernetes: 基于污点的驱逐

  • kube-apiserver(Kubernetes v1.13 及以上)

    • default-not-ready-toleration-seconds:指示默认添加到每个没有此类容忍的 pod 的 notReady:NoExecute 的容忍时间。

    • default-unreachable-toleration-seconds:指示默认添加到每个没有此类容忍的 pod 的 unreachable:NoExecute 的容忍时间。

我可以在用户界面中使用键盘快捷键吗?

是的,用户界面的大部分功能可以通过键盘快捷键访问。要查看可用快捷键的概述,请在用户界面的任何地方按 ?