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

GlusterFS Volumes

本节仅适用于RKE集群。

在将数据存储在GlusterFS卷的集群中,您可能会遇到一个问题,即在重启`kubelet`后,pods无法挂载卷。kubelet`的日志将显示:`transport endpoint is not connected。为了防止这种情况发生,您可以配置集群在`systemd-run`容器中挂载`kubelet`二进制文件。在您可以更改集群配置之前,有两个要求:

  • 节点需要安装`systemd-run`二进制文件(可以通过在每个集群节点上使用命令`which systemd-run`来检查)

  • `systemd-run`二进制文件需要与 hyperkube 镜像所基于的 Debian 操作系统兼容(可以通过在每个集群节点上使用以下命令进行检查,替换镜像标签为您想要使用的 Kubernetes 版本)

docker run -v /usr/bin/systemd-run:/usr/bin/systemd-run -v /usr/lib/x86_64-linux-gnu/libcrypto.so.3:/usr/lib/x86_64-linux-gnu/libcrypto.so.3 -v /lib/systemd/libsystemd-shared-249.so:/lib/systemd/libsystemd-shared-249.so --entrypoint /usr/bin/systemd-run rancher/hyperkube:v1.26.14-rancher1 --version

在更新您的 Kubernetes YAML 以挂载 systemd-run 二进制文件之前,请确保在您的集群节点上安装了 systemd 软件包。如果在 Kubernetes YAML 中创建绑定挂载之前(即 before)未安装此软件包,Docker 将在每个节点上自动创建目录和文件,并且不会允许软件包安装成功。

services:
  kubelet:
    extra_binds:
      - "/usr/bin/systemd-run:/usr/bin/systemd-run"
      - "/usr/lib/x86_64-linux-gnu/libcrypto.so.3:/usr/lib/x86_64-linux-gnu/libcrypto.so.3"
      - "/lib/systemd/libsystemd-shared-249.so:/lib/systemd/libsystemd-shared-249.so"

在集群完成配置后,您可以检查 kubelet 容器的日志,以通过查找以下日志行来确认功能是否已激活:

Detected OS with systemd