5장. 업데이트 후 구성 변경

경우에 따라 모든 기능이 예상대로 작동하는지 확인하기 위해 업데이트 후 추가 구성 단계가 필요합니다.

5.1. 로컬 스토리지에서 지원하는 클러스터의 업데이트 후 구성

Red Hat OpenShift Container Platform 4.6 이상에서 Local Storage Operator는 로컬 스토리지 관리를 위한 새로운 사용자 정의 리소스 유형을 제공합니다.

  • LocalVolumeDiscovery
  • LocalVolumeSet

이러한 리소스 유형은 이전 버전의 업데이트의 일부로 자동으로 처리되지 않으며 수동으로 생성해야 합니다.

5.1.1. 명령줄을 사용하여 LocalVolumeDiscovery 사용자 정의 리소스 생성

LocalVolumeDiscovery 사용자 지정 리소스를 생성하여 장치 관리 사용자 인터페이스에서 로컬 장치의 상태를 검색하고 클러스터 노드에서 사용 가능한 장치에 대한 정보를 제공할 수 있습니다.

사전 요구 사항

  • OpenShift Container Platform 클러스터에 대한 관리 액세스

절차

  1. Local Storage Operator가 설치된 프로젝트로 변경합니다.

    $ oc project local-storage-project

    local-storage-project 를 Local Storage 프로젝트 이름으로 교체합니다.

    버전 4.5 및 이전 버전에서 기본 로컬 스토리지 프로젝트의 이름은 local-storage 입니다. 버전 4.6 이상에서 기본 로컬 스토리지 프로젝트의 이름은 openshift-local-storage 입니다.

  2. LocalVolumeDiscovery 사용자 정의 리소스를 정의합니다.

    예를 들어 local-volume-discovery.yaml 파일에서 다음을 정의합니다.

    apiVersion: local.storage.openshift.io/v1alpha1
    kind: LocalVolumeDiscovery
    metadata:
      name: auto-discover-devices
    spec:
      nodeSelector:
        nodeSelectorTerms:
          - matchExpressions:
              - key: kubernetes.io/hostname
                operator: In
                values:
                  - worker1.example.com
                  - worker2.example.com
                  - worker3.example.com
  3. LocalVolumeDiscovery 사용자 정의 리소스를 생성합니다.

    $ oc create -f local-volume-discovery.yaml

검증 단계

  1. OpenShift 웹 콘솔에 로그인합니다.
  2. 컴퓨팅노드 를 클릭하고 노드 이름을 클릭합니다.
  3. 디스크 탭을 클릭하고 해당 노드에서 사용 가능한 장치를 볼 수 있는지 확인합니다.

5.1.2. 명령줄을 사용하여 로컬 볼륨 세트 사용자 정의 리소스 생성

지정된 조건에 따라 특정 스토리지 장치를 영구 볼륨으로 자동으로 프로비저닝하는 LocalVolumeSet 사용자 정의 리소스를 생성합니다. nodeSelector 기준과 일치하는 노드의 deviceInclusionSpec 기준과 일치하는 모든 장치에 대해 영구 볼륨이 생성됩니다.

사전 요구 사항

  • OpenShift Container Platform 클러스터에 대한 관리 액세스

절차

  1. local-volume-set.yaml 파일에 LocalVolumeSet 사용자 정의 리소스를 정의합니다.

    apiVersion: local.storage.openshift.io/v1alpha1
    kind: LocalVolumeSet
    metadata:
      name: localblock
    spec:
      nodeSelector:
        nodeSelectorTerms:
          - matchExpressions:
              - key: kubernetes.io/hostname
                operator: In
                values:
                  - worker1.example.com
                  - worker2.example.com
                  - worker3.example.com
      storageClassName: localblock
      volumeMode: Block
      maxDeviceCount: 10 # optional, limit devices provisioned per node
      deviceInclusionSpec:
        deviceTypes: # list of types to allow
          - disk
          - part # omit this to use only whole devices
        deviceMechanicalProperty:
          - NonRotational
        minSize: 100Gi # optional, minimum size of device to allow
        maxSize: 100Ti # optional, maximum size of device to allow
        models: # (optional) list of models to allow
          - SAMSUNG
          - Crucial_CT525MX3
        vendors: # (optional) list of device vendors to allow
          - ATA
          - ST2000LM

    위의 정의는 worker1,worker2worker3 노드에서 특정 공급 업체가 제공하는 100GB 및 100 TB 크기의 특정 모델에서 전체 디스크 또는 파티션을 선택합니다. 로컬 블록 스토리지 클래스가 생성되고 영구 볼륨이 검색된 장치에서 프로비저닝됩니다.

    중요

    minSize 에 적절한 값을 선택하여 시스템 파티션이 선택되지 않도록 합니다.

  2. 로컬 볼륨 세트 생성.

    $ oc create -f local-volume-set.yaml

검증 단계

  1. 다음 명령을 사용하여 deviceInclusionSpec 과 일치하는 장치에 대한 영구 볼륨의 프로비저닝을 추적합니다. 영구 볼륨을 프로비저닝하는 데 몇 분이 걸릴 수 있습니다.

    $ oc describe localvolumeset localblock
    [...]
    Status:
      Conditions:
        Last Transition Time:          2020-11-17T05:03:32Z
        Message:                       DiskMaker: Available, LocalProvisioner: Available
        Status:                        True
        Type:                          DaemonSetsAvailable
        Last Transition Time:          2020-11-17T05:03:34Z
        Message:                       Operator reconciled successfully.
        Status:                        True
        Type:                          Available
      Observed Generation:             1
      Total Provisioned Device Count: 4
    Events:
    Type    Reason      Age          From                Message
    ----    ------      ----         ----                -------
    Normal  Discovered  2m30s (x4    localvolumeset-     ip-10-0-147-124.us-east-
            NewDevice   over 2m30s)  symlink-controller  2.compute.internal -
                                                         found possible matching
                                                         disk, waiting 1m to claim
    Normal  FoundMatch  89s (x4      localvolumeset-     ip-10-0-147-124.us-east-
            ingDisk     over 89s)    symlink-controller  2.compute.internal -
                                                         symlinking matching disk
  2. 프로비저닝된 영구 볼륨의 상태를 확인합니다.

    $ oc get pv
                         ACCESS   RECLAIM             STORAGE
    NAME       CAPACITY  MODES    POLICY   STATUS     CLASS       AGE
    local-pv-  500Gi     RWO      Delete   Available  localblock  7m48s
    3584969f
    local-pv-  500Gi     RWO      Delete   Available  localblock  7m48s
    3aee84fa
    local-pv-  500Gi     RWO      Delete   Available  localblock  7m48s
    644d09ac
    local-pv-  500Gi     RWO      Delete   Available  localblock  7m48s
    c73cee1

5.1.3. 주석 추가

이전 버전에서 OpenShift Container Storage 4.6으로 업그레이드할 때 사용자 인터페이스를 통해 실패한 스토리지 장치를 교체하도록 스토리지 클러스터에 주석을 추가하려면 다음 절차를 사용하십시오.

절차

  1. OpenShift Container Platform 웹 콘솔에 로그인합니다.
  2. 검색을 클릭합니다.
  3. 클러스터에서 스토리지 클러스터를 검색하고 해당 클러스터를 클릭합니다.
  4. ocs-storagecluster 옆의 작업 메뉴 (tekton) → 주석 편집을 클릭합니다.
  5. KEYVALUE 에 각각 cluster.ocs.openshift.io/local-devicestrue 를 추가합니다.
  6. 저장을 클릭합니다.