Compatibility and requirements

For the complete and up-to-date information about the compatibility and requirements for using the IBM block storage CSI driver, refer to its latest release notes. The release notes detail supported operating system and container platform versions, as well as microcode versions of the supported storage systems. You can find the latest release notes on IBM block storage CSI driver Knowledge Center website.

Before you begin

Before beginning the installation of the CSI (Container Storage Interface) driver be sure to verify that you comply with the following prerequisites.
  1. The CSI driver requires the following ports to be opened on the worker nodes OS firewall:
    For all iSCSI users
    Port 3260
    FlashSystem A9000 and A9000R
    Port 7778
    IBM Spectrum Virtualize Family
    includes IBM SAN Volume Controller and IBM FlashSystem family members built with IBM Spectrum Virtualize (FlashSystem 5010, 5030, 5100, 7200, 9100, 9200, 9200R)
    Port 22
    DS8000 Family systems
    Port 8452
  2. Be sure that multipathing is installed and running.

    For iSCSI single path users (RHEL only), be sure to define a virtual multipath. For example, remove find_multipaths yes from the multipath.conf file.

About this task

Perform these steps for each worker node in Kubernetes cluster to prepare your environment for installing the CSI (Container Storage Interface) driver.

Procedure

  1. Perform this step to ensure iSCSI connectivity, when using RHEL OS. If using RHCOS or if the packages are already installed, continue to step 2.
    • iscsi-initiator-utils (if iSCSI connection is required)
    • xfsprogs (if XFS file system is required)
    yum -y install iscsi-initiator-utils
    yum -y install xfsprogs
  2. Configure Linux multipath devices on the host, using one of the following procedures.
    Configuring for OpenShift Container Platform users (RHEL and RHCOS)
    The following yaml file can be used for both Fibre Channel and iSCSI configurations. To support iSCSI, uncomment the last two lines in the file.
    Save the following 99-ibm-attach.yaml file.
    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfig
    metadata:
      labels:
        machineconfiguration.openshift.io/role: worker
      name: 99-ibm-attach
    spec:
      config:
        ignition:
          version: 2.2.0
        storage:
          files:
            - path: /etc/multipath.conf
              mode: 384
              filesystem: root
              contents:
                source: data:,defaults%20%7B%0A%20%20%20%20path_checker%20tur%0A%20%20%20%20path_selector%20%22round-robin%200%22%0A%20%20%20%20rr_weight%20uniform%0A%20%20%20%20prio%20const%0A%20%20%20%20rr_min_io_rq%201%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20polling_interval%2030%0A%20%20%20%20path_grouping_policy%20multibus%0A%20%20%20%20find_multipaths%20yes%0A%20%20%20%20no_path_retry%20fail%0A%20%20%20%20user_friendly_names%20yes%0A%20%20%20%20failback%20immediate%0A%20%20%20%20checker_timeout%2010%0A%20%20%20%20fast_io_fail_tmo%20off%0A%7D%0A%0Adevices%20%7B%0A%20%20%20%20device%20%7B%0A%20%20%20%20%20%20%20%20path_checker%20tur%0A%20%20%20%20%20%20%20%20product%20%22FlashSystem%22%0A%20%20%20%20%20%20%20%20vendor%20%22IBM%22%0A%20%20%20%20%20%20%20%20rr_weight%20uniform%0A%20%20%20%20%20%20%20%20rr_min_io_rq%204%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20path_grouping_policy%20multibus%0A%20%20%20%20%20%20%20%20path_selector%20%22round-robin%200%22%0A%20%20%20%20%20%20%20%20no_path_retry%20fail%0A%20%20%20%20%20%20%20%20failback%20immediate%0A%20%20%20%20%7D%0A%20%20%20%20device%20%7B%0A%20%20%20%20%20%20%20%20path_checker%20tur%0A%20%20%20%20%20%20%20%20product%20%22FlashSystem-9840%22%0A%20%20%20%20%20%20%20%20vendor%20%22IBM%22%0A%20%20%20%20%20%20%20%20fast_io_fail_tmo%20off%0A%20%20%20%20%20%20%20%20rr_weight%20uniform%0A%20%20%20%20%20%20%20%20rr_min_io_rq%201000%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20path_grouping_policy%20multibus%0A%20%20%20%20%20%20%20%20path_selector%20%22round-robin%200%22%0A%20%20%20%20%20%20%20%20no_path_retry%20fail%0A%20%20%20%20%20%20%20%20failback%20immediate%0A%20%20%20%20%7D%0A%20%20%20%20device%20%7B%0A%20%20%20%20%20%20%20%20vendor%20%22IBM%22%0A%20%20%20%20%20%20%20%20product%20%222145%22%0A%20%20%20%20%20%20%20%20path_checker%20tur%0A%20%20%20%20%20%20%20%20features%20%221%20queue_if_no_path%22%0A%20%20%20%20%20%20%20%20path_grouping_policy%20group_by_prio%0A%20%20%20%20%20%20%20%20path_selector%20%22service-time%200%22%20%23%20Used%20by%20Red%20Hat%207.x%0A%20%20%20%20%20%20%20%20prio%20alua%0A%20%20%20%20%20%20%20%20rr_min_io_rq%201%0A%20%20%20%20%20%20%20%20rr_weight%20uniform%20%0A%20%20%20%20%20%20%20%20no_path_retry%20%225%22%0A%20%20%20%20%20%20%20%20dev_loss_tmo%20120%0A%20%20%20%20%20%20%20%20failback%20immediate%0A%20%20%20%7D%0A%7D%0A
                verification: {}
            - path: /etc/udev/rules.d/99-ibm-2145.rules
              mode: 420
              filesystem: root
              contents:
                source: data:,%23%20Set%20SCSI%20command%20timeout%20to%20120s%20%28default%20%3D%3D%2030%20or%2060%29%20for%20IBM%202145%20devices%0ASUBSYSTEM%3D%3D%22block%22%2C%20ACTION%3D%3D%22add%22%2C%20ENV%7BID_VENDOR%7D%3D%3D%22IBM%22%2CENV%7BID_MODEL%7D%3D%3D%222145%22%2C%20RUN%2B%3D%22/bin/sh%20-c%20%27echo%20120%20%3E/sys/block/%25k/device/timeout%27%22%0A
                verification: {}
        systemd:
          units:
          - name: multipathd.service
            enabled: true
          # Uncomment the following lines if this MachineConfig will be used with iSCSI connectivity
          #- name: iscsid.service
          #  enabled: true
    
    Apply the yaml file.
    oc apply -f 99-ibm-attach.yaml
    RHEL users should verify that the systemctl status multipathd output indicates that the multipath status is active and error-free.
    yum install device-mapper-multipath
    sudo modprobe dm-multipath
    systemctl enable multipathd
    systemctl start multipathd
    systemctl status multipathd
    multipath -ll
    Configuring for Kubernetes users (RHEL)

    Create and set the relevant storage system parameters in the /etc/multipath.conf file. You can also use the default multipath.conf file, located in the /usr/share/doc/device-mapper-multipath-* directory.

    Verify that the systemctl status multipathd output indicates that the multipath status is active and error-free.

    yum install device-mapper-multipath
    sudo modprobe dm-multipath
    systemctl enable multipathd
    systemctl start multipathd
    systemctl status multipathd
    multipath -ll
  3. Configure storage system connectivity.
    1. Define the host of each Kubernetes node on the relevant storage systems with the valid WWPN (for Fibre Channel) or IQN (for iSCSI) of the node.
    2. For Fibre Channel, configure the relevant zoning from the storage to the host.