7.3.11.3.2. 磁盘分区

磁盘分区是在 Red Hat Enterprise Linux CoreOS(RHCOS)安装过程中在 OpenShift Container Platform 集群节点上创建的。特定架构的每个 RHCOS 节点都使用相同的分区布局,除非默认分区配置被覆盖。在 RHCOS 安装过程中,根文件系统的大小会增大,以使用目标设备中剩余的可用空间。

但是,在安装 OpenShift Container Platform 节点时,在两种情况下您可能需要覆盖默认分区:

  • 创建单独的分区:对于在空磁盘中的 greenfield 安装,您可能想要在分区中添加单独的存储。这只在生成 /var 或者一个 /var 独立分区的子目录(如 /var/lib/etcd )时被正式支持,但不支持两者。

    重要

    Kubernetes 只支持两个文件系统分区。如果您在原始配置中添加多个分区,Kubernetes 无法监控所有这些分区。

  • 保留现有分区:对于 brownfield 安装,您要在现有节点上重新安装 OpenShift Container Platform,并希望保留从之前的操作系统中安装的数据分区,对于 coreos-installer 来说,引导选项和选项都允许您保留现有数据分区。
7.3.11.3.2.1. 创建一个独立的 /var 分区

通常情况下,OpenShift Container Platform 的磁盘分区应该留给安装程序。然而,在有些情况下您可能需要在文件系统的一部分中创建独立分区。

OpenShift Container Platform 支持添加单个分区来将存储附加到 /var 分区或 /var 的子目录。例如:

  • /var/lib/containers:保存镜像相关的内容,随着更多镜像和容器添加到系统中,它所占用的存储会增加。
  • /var/lib/etcd:保存您可能希望保持独立的数据,比如 etcd 存储的性能优化。
  • /var:保存您希望独立保留的数据,用于特定目的(如审计)。

单独存储 /var 目录的内容可方便地根据需要对区域扩展存储,并可以在以后重新安装 OpenShift Container Platform 时保持该数据地完整。使用这个方法,您不必再次拉取所有容器,在更新系统时也无法复制大量日志文件。

因为 /var 在进行一个全新的 Red Hat Enterprise Linux CoreOS(RHCOS)安装前必需存在,所以这个流程会在 OpenShift Container Platform 安装过程的 openshift-install 准备阶段插入的机器配置来设置独立的 /var 分区。

流程

  1. 创建存放 OpenShift Container Platform 安装文件的目录:

    $ mkdir $HOME/clusterconfig
  2. 运行 openshift-installmanifestopenshift 子目录中创建一组文件。在出现提示时回答系统问题:

    $ openshift-install create manifests --dir $HOME/clusterconfig
    ? SSH Public Key ...
    $ ls $HOME/clusterconfig/openshift/
    99_kubeadmin-password-secret.yaml
    99_openshift-cluster-api_master-machines-0.yaml
    99_openshift-cluster-api_master-machines-1.yaml
    99_openshift-cluster-api_master-machines-2.yaml
    ...
  3. 创建 MachineConfig 对象并将其添加到 openshift 目录中的一个文件中。例如,把文件命名为 98-var-partition.yaml,将磁盘设备名称改为 worker 系统中存储设备的名称,并根据情况设置存储大小。这个示例将 /var 目录放在一个单独的分区中:

    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfig
    metadata:
      labels:
        machineconfiguration.openshift.io/role: worker
      name: 98-var-partition
    spec:
      config:
        ignition:
          version: 3.2.0
        storage:
          disks:
          - device: /dev/<device_name> 1
            partitions:
            - label: var
              startMiB: <partition_start_offset> 2
              sizeMiB: <partition_size> 3
          filesystems:
            - device: /dev/disk/by-partlabel/var
              path: /var
              format: xfs
        systemd:
          units:
            - name: var.mount 4
              enabled: true
              contents: |
                [Unit]
                Before=local-fs.target
                [Mount]
                What=/dev/disk/by-partlabel/var
                Where=/var
                Options=defaults,prjquota 5
                [Install]
                WantedBy=local-fs.target
    1
    要分区的磁盘的存储设备名称。
    2
    当在引导磁盘中添加数据分区时,推荐最少使用 25000MB。root 文件系统会自动重新定义大小使其占据所有可用空间(最多到指定的偏移值)。如果没有指定值,或者指定的值小于推荐的最小值,则生成的 root 文件系统会太小,而在以后进行的 RHCOS 重新安装可能会覆盖数据分区的开始部分。
    3
    数据分区的大小(以兆字节为单位)。
    4
    挂载单元的名称必须与 Where= 指令中指定的目录匹配。例如,对于挂载在 /var/lib/containers 上的文件系统,该单元必须命名为 var-lib-containers.mount
    5
    对于用于容器存储的文件系统,必须启用 prjquota 挂载选项。
    注意

    在创建独立 /var 分区时,如果不同的实例类型没有相同的设备名称,则无法将不同的实例类型用于 worker 节点。

  4. 再次运行 openshift-install,从 manifestopenshift 子目录中的一组文件创建 Ignition 配置:

    $ openshift-install create ignition-configs --dir $HOME/clusterconfig
    $ ls $HOME/clusterconfig/
    auth  bootstrap.ign  master.ign  metadata.json  worker.ign

现在,可以使用 Ignition 配置文件作为 ISO 或 PXE 手动安装过程的输入来安装 Red Hat Enterprise Linux CoreOS(RHCOS)系统。

7.3.11.3.2.2. 保留现有分区

对于 ISO 安装,您可以在 coreos-installer 命令行中添加可让安装程序维护一个或多个现有分区的选项。对于 PXE 安装,您可以 APPEND coreos.inst.* 选项来保留分区。

保存的分区可能是来自现有 OpenShift Container Platform 系统中的分区,其中包括了您希望保留的数据分区。以下是几个提示:

  • 如果您保存了现有分区,且这些分区没有为 RHCOS 留下足够空间,则安装将失败但不会损害已保存的分区。
  • 通过分区标签或数字识别您要保留的磁盘分区。

对于 ISO 安装

这个示例保留分区标签以数据data*)开头的任何分区:

# coreos-installer install --ignition-url http://10.0.2.2:8080/user.ign \
        --save-partlabel 'data*' /dev/sda

以下示例演示了在运行 coreos-installer 时要保留磁盘上的第 6 个分区:

# coreos-installer install --ignition-url http://10.0.2.2:8080/user.ign \
        --save-partindex 6 /dev/sda

这个示例保留了分区 5 及更高分区:

# coreos-installer install --ignition-url http://10.0.2.2:8080/user.ign
        --save-partindex 5- /dev/sda

在前面已保存分区的示例中,coreos-installer 会立即重新创建分区。

对于 PXE 安装

这个 APPEND 选项保留分区标签以 'data'('data*')开头的所有分区:

coreos.inst.save_partlabel=data*

这个 APPEND 选项保留分区 5 及其后的分区:

coreos.inst.save_partindex=5-

这个 APPEND 选项保留分区 6:

coreos.inst.save_partindex=6