26.6. 配置原始块设备


可以使用本地卷置备程序静态置备原始块设备。此功能默认为禁用,需要其他配置。

配置原始块设备:

  1. 在所有 master 上启用 BlockVolume 功能门。在所有 master(默认为/etc/origin/master/master-config.yaml )上编辑或创建 master 配置文件,并在 apiServerArgumentscontrollerArguments 部分中添加 BlockVolume=true

    apiServerArguments:
       feature-gates:
       - BlockVolume=true
    ...
    
     controllerArguments:
       feature-gates:
       - BlockVolume=true
    ...
  2. 通过编辑节点配置 ConfigMap,在所有节点中启用功能门:

    $ oc edit configmap node-config-compute --namespace openshift-node
    $ oc edit configmap node-config-master --namespace openshift-node
    $ oc edit configmap node-config-infra --namespace openshift-node
  3. 确保所有 ConfigMap 都包含 kubeletArguments 的功能门数组中的 BlockVolume=true,例如:

    节点 configmap 功能门设置

    kubeletArguments:
       feature-gates:
       - RotateKubeletClientCertificate=true,RotateKubeletServerCertificate=true,BlockVolume=true

  4. 重启 master。节点在配置更改后自动重启。这可能需要几分钟时间。

26.6.1. 准备原始块设备

在启动置备程序前,请链接 pod 可用于 /mnt/local-storage/<storage class> 目录结构的所有原始块设备。例如,使目录 /dev/dm-36 可用:

  1. /mnt/local-storage 中为设备的存储类创建一个目录:

    $ mkdir -p /mnt/local-storage/block-devices
  2. 创建指向该设备的符号链接:

    $ ln -s /dev/dm-36 dm-uuid-LVM-1234
    注意

    为了避免可能的名称冲突,请将相同的名称用于符号链接,以及 /dev/disk/by-uuid/dev/disk/by-id 目录的链接。

  3. 创建或更新配置置备程序的 ConfigMap:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: local-volume-config
    data:
        storageClassMap: |
            block-devices: 1
                hostDir:  /mnt/local-storage/block-devices 2
                mountDir: /mnt/local-storage/block-devices 3
    1
    存储类的名称。
    2
    到主机上的目录的路径。它必须是 /mnt/local-storage 的子目录。
    3
    指向 provisioner pod 中的目录的路径。如果使用主机使用的目录结构,建议使用它,省略 mountDir 参数。
  4. 更改设备的 SELinux 标签和 /mnt/local-storage/

    $ chcon -R unconfined_u:object_r:svirt_sandbox_file_t:s0 /mnt/local-storage/
    $ chcon unconfined_u:object_r:svirt_sandbox_file_t:s0 /dev/dm-36
  5. 为原始块设备创建存储类:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
     name: block-devices
    provisioner: kubernetes.io/no-provisioner
    volumeBindingMode: WaitForFirstConsumer

块设备 /dev/dm-36 现在可供置备程序使用,并置备为 PV。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.