1.6.14. 磁盘分区

在大多数情况下,数据分区最初是由安装 RHCOS 而不是安装另一个操作系统来创建的。在这种情况下,OpenShift Container Platform 安装程序应该被允许配置磁盘分区。

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

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

    重要

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

  • 保留现有分区:对于 brownfield 安装,您要在现有节点上重新安装 OpenShift Container Platform,并希望保留从之前的操作系统安装的数据分区,coreos-installer 的引导选项和选项都允许您保留现有数据分区。

创建单独的 /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 分区。

先决条件

  • 如果容器存储位于 root 分区中,请确定使用 pquota 选项挂载这个 root 分区,方法是在 GRUB 命令行中包含 rootflags=pquota
  • 如果容器存储位于由 /etc/fstab 挂载的分区中,请确保以下挂载选项包括在 /etc/fstab 文件中:

    /dev/sdb1      /var           xfs defaults,pquota 0 0
  • 如果容器存储位于由 systemd 挂载的分区中,请确保 MachineConfig 对象包含以下挂载选项,如下例所示:

    spec:
      config:
        ignition:
          version: 3.1.0
        storage:
          disks:
            - device: /dev/sdb
              partitions:
                - label: var
                  sizeMiB: 240000
                  startMiB: 0
                filesystems:
            - device: /dev/disk/by-partlabel/var
              format: xfs
              path: /var
        systemd:
          units:
            - contents: |
                [Unit]
                Before=local-fs.target
                [Mount]
                Where=/var
                What=/dev/disk/by-partlabel/var
                Options=defaults,pquota
                [Install]
                WantedBy=local-fs.target
              enabled: true
              name: var.mount

流程

  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.1.0
        storage:
          disks:
          - device: /dev/<device_name> 1
            partitions:
            - sizeMiB: <partition_size>
              startMiB: <partition_start_offset> 2
              label: var
          filesystems:
            - path: /var
              device: /dev/disk/by-partlabel/var
              format: xfs
        systemd:
          units:
            - name: var.mount
              enabled: true
              contents: |
                [Unit]
                Before=local-fs.target
                [Mount]
                Where=/var
                What=/dev/disk/by-partlabel/var
                [Install]
                WantedBy=local-fs.target
    1
    要分区的磁盘的存储设备名称。
    2
    当在引导磁盘中添加数据分区时,推荐最少使用 25000MB。root 文件系统会自动重新定义大小使其占据所有可用空间(最多到指定的偏移值)。如果没有指定值,或者指定的值小于推荐的最小值,则生成的 root 文件系统会太小,而在以后进行的 RHCOS 重新安装可能会覆盖数据分区的开始部分。
  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 配置文件作为 vSphere 安装程序的输入来安装 Red Hat Enterprise Linux CoreOS(RHCOS)系统。