Deploying OpenShift Container Storage using Amazon Web Services

Red Hat OpenShift Container Storage 4.7

OpenShift Container Platform AWS 클러스터에 OpenShift Container Storage를 설치하고 설정하는 방법

Red Hat Storage Documentation Team

초록

로컬 또는 클라우드 스토리지용 Amazon Web Services를 사용하여 Red Hat OpenShift Container Storage 4.7을 설치하는 방법에 대한 지침은 이 문서를 참조하십시오.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.

Red Hat 문서에 관한 피드백 제공

문서 개선을 위한 의견을 보내 주십시오. 개선할 내용에 대해 알려주십시오. 피드백을 보내주시려면 다음을 확인하십시오.

  • 특정 문구에 대한 간단한 의견 작성 방법은 다음과 같습니다.

    1. 문서가 Multi-page HTML 형식으로 표시되는지 확인합니다. 또한 문서 오른쪽 상단에 피드백 버튼이 있는지 확인합니다.
    2. 마우스 커서를 사용하여 주석 처리하려는 텍스트 부분을 강조 표시합니다.
    3. 강조 표시된 텍스트 아래에 표시되는 피드백 추가 팝업을 클릭합니다.
    4. 표시된 지침을 따릅니다.
  • 보다 상세하게 피드백을 제출하려면 다음과 같이 Bugzilla 티켓을 생성하십시오.

    1. Bugzilla 웹 사이트로 이동하십시오.
    2. 구성 요소로 문서를 사용합니다.
    3. 설명 필드에 문서 개선을 위한 제안 사항을 기입하십시오. 관련된 문서의 해당 부분 링크를 알려주십시오.
    4. 버그 제출을 클릭합니다.

머리말

Red Hat OpenShift Container Storage 4.7에서는 프록시 환경에 대한 기본 지원이 제공되지 않거나 연결이 끊긴 환경의 기존 Red Hat OpenShift Container Platform(RHOCP) AWS 클러스터에 대한 배포를 지원합니다.

참고

내부 Openshift Container Storage 클러스터만 AWS에서 지원됩니다. 배포 요구 사항에 대한 자세한 내용은 배포 계획 및 OpenShift Container Storage 배포 준비를 참조하십시오.

OpenShift Container Storage를 배포하려면 OpenShift Container Storage 배포 준비 장의 요구 사항부터 시작하여 환경에 맞는 다음 배포 프로세스 중 하나를 따르십시오.

1장. OpenShift Container Storage 배포 준비

동적 또는 로컬 스토리지 장치를 사용하여 OpenShift Container Platform에 OpenShift Container Storage를 배포하면 내부 클러스터 리소스를 생성할 수 있는 옵션이 제공됩니다. 이렇게 하면 기본 서비스가 내부 프로비저닝되므로 애플리케이션에서 추가 스토리지 클래스를 사용할 수 있습니다.

Red Hat OpenShift Container Storage 배포를 시작하기 전에 다음 단계를 따르십시오.

  1. 작업자 노드를 위한 Red Hat Enterprise Linux 기반 호스트의 경우 Red Hat Enterprise Linux 기반 노드의 컨테이너에 파일 시스템 액세스를 활성화합니다.

    참고

    RHCOS(Red Hat Enterprise Linux CoreOS)의 경우 이 단계를 건너뜁니다.

  2. 선택 사항: 외부 키 관리 시스템(KMS)을 사용하여 클러스터 전체 암호화를 활성화하려면 다음을 수행합니다.

  3. 최소 노드 시작 요구 사항 [기술 프리뷰]

    표준 배포 리소스 요구 사항이 충족되지 않은 경우 OpenShift Container Storage 클러스터는 최소 구성으로 배포됩니다. 계획 가이드의 리소스 요구 사항 섹션을 참조하십시오.

  4. 로컬 스토리지 장치를 사용하여 OpenShift Container Storage를 설치하기 위한 요구사항 을 이해합니다. 동적 스토리지 장치를 사용한 배포에는 적용되지 않습니다.

1.1. Red Hat Enterprise Linux 기반 노드에서 컨테이너에 파일 시스템 액세스 활성화

사용자 프로비저닝 인프라(UPI)에서 Red Hat Enterprise Linux 기반의 작업자 노드가 있는 OpenShift Container Platform에 OpenShift Container Storage를 배포하면 기본 Ceph 파일 시스템에 대한 컨테이너 액세스 권한을 자동으로 제공하지 않습니다.

참고

RHCOS(Red Hat Enterprise Linux CoreOS) 기반 호스트의 경우 이 단계를 건너뜁니다.

절차

  1. Red Hat Enterprise Linux 기반 노드에 로그인하고 터미널을 엽니다.
  2. 클러스터의 각 노드에 대해 다음을 수행합니다.

    1. 노드에 rhel-7-server-extras-rpms 리포지토리에 대한 액세스 권한이 있는지 확인합니다.

      # subscription-manager repos --list-enabled | grep rhel-7-server

      출력에 rhel-7-server-rpmsrhel-7-server-extras-rpms 가 모두 표시되지 않거나 출력이 없는 경우 다음 명령을 실행하여 각 리포지토리를 활성화합니다.

      # subscription-manager repos --enable=rhel-7-server-rpms
      # subscription-manager repos --enable=rhel-7-server-extras-rpms
    2. 필요한 패키지를 설치합니다.

      # yum install -y policycoreutils container-selinux
    3. SELinux에서 Ceph 파일 시스템의 컨테이너 사용을 영구적으로 활성화합니다.

      # setsebool -P container_use_cephfs on

1.2. Vault에서 키 값 백엔드 경로 및 정책 활성화

사전 요구 사항

  • Vault에 대한 관리자 액세스 권한이 있어야 합니다.
  • 나중에 변경할 수 없기 때문에 이름 지정 규칙을 따르는 백엔드 path로 고유한 경로 이름을 신중하게 선택합니다.

절차

  1. Vault에서 KV(Key/Value) 백엔드 경로를 활성화합니다.

    Vault KV 시크릿 엔진 API의 경우 버전 1:

    $ vault secrets enable -path=ocs kv

    Vault KV 시크릿 엔진 API의 경우 버전 2:

    $ vault secrets enable -path=ocs kv-v2
  2. 다음 명령을 사용하여 시크릿에서 쓰기 또는 삭제 작업을 수행하도록 사용자를 제한하는 정책을 생성합니다.

    echo '
    path "ocs/*" {
      capabilities = ["create", "read", "update", "delete", "list"]
    }
    path "sys/mounts" {
    capabilities = ["read"]
    }'| vault policy write ocs -
  3. 위 정책과 일치하는 토큰을 생성합니다.

    $ vault token create -policy=ocs -format json

1.3. 로컬 스토리지 장치를 사용하여 OpenShift Container Storage를 설치하기 위한 요구사항

노드 요구 사항

클러스터는 각각 로컬에 연결된 3개 이상의 OpenShift Container Platform 작업자 노드로 구성되어야 합니다.

  • 선택한 세 개의 각 노드에는 OpenShift Container Storage에서 사용할 수 있는 하나 이상의 원시 블록 장치를 사용할 수 있어야 합니다.
  • 사용하는 장치는 비어 있어야 합니다. 디스크에 물리 볼륨(PV), 볼륨 그룹(VG) 또는 논리 볼륨(LV)이 디스크에 남아 있지 않아야 합니다.
  • 최소 3개의 레이블이 있는 노드가 있어야 합니다.

    • 노드가 여러 가용성 영역 플랫폼에 대해 다른 위치/서비스 가능 영역에 분산되어 있는지 확인합니다.
    • OpenShift Container Storage에서 사용할 로컬 스토리지 장치가 있는 각 노드에는 OpenShift Container Storage 포드를 배포하려면 특정 레이블이 있어야 합니다. 노드에 레이블을 지정하려면 다음 명령을 사용하십시오.

      $ oc label nodes <NodeNames> cluster.ocs.openshift.io/openshift-storage=''

계획 가이드의 리소스 요구 사항 섹션을 참조하십시오.

최소 노드 시작 요구 사항 [기술 프리뷰]

표준 배포 리소스 요구 사항이 충족되지 않은 경우 OpenShift Container Storage 클러스터는 최소 구성으로 배포됩니다. 계획 가이드의 리소스 요구 사항 섹션을 참조하십시오.

2장. 동적 스토리지 장치를 사용하여 배포

AWS EBS(type: gp2)에서 제공하는 동적 스토리지 장치를 사용하여 OpenShift Container Platform에 OpenShift Container Storage를 배포하면 내부 클러스터 리소스를 생성할 수 있는 옵션이 제공됩니다. 이렇게 하면 기본 서비스가 내부 프로비저닝되므로 애플리케이션에서 추가 스토리지 클래스를 사용할 수 있습니다.

참고

내부 Openshift Container Storage 클러스터만 AWS에서 지원됩니다. 배포 요구 사항에 대한 자세한 내용은 배포 계획을 참조하십시오.

또한 동적 스토리지 장치를 사용하여 배포하기 위한 다음 단계를 진행하기 전에 OpenShift Container Storage 배포 준비에 대한 요구 사항을 해결했는지 확인하십시오.

2.1. Red Hat OpenShift Container Storage Operator 설치

Red Hat OpenShift Container Platform Operator Hub를 사용하여 Red Hat OpenShift Container Storage Operator를 설치할 수 있습니다.

사전 요구 사항

  • cluster-admin 및 Operator 설치 권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터에 액세스할 수 있습니다.
  • RuntimeClass 클러스터에 3개 이상의 작업자 노드가 있습니다.
  • 추가 리소스 요구 사항은 배포 계획을 참조하십시오.
참고
  • OpenShift Container Storage의 클러스터 수준 기본 노드 선택기를 재정의해야 하는 경우 명령줄 인터페이스에서 다음 명령을 사용하여 openshift-storage 네임스페이스에 대한 빈 노드 선택기를 지정할 수 있습니다(이 경우 openshift-storage 네임스페이스 생성).

    $ oc annotate namespace openshift-storage openshift.io/node-selector=
  • 노드를 infra 로 테인트하여 해당 노드에 Red Hat OpenShift Container Storage 리소스만 예약되도록 합니다. 이를 통해 서브스크립션 비용을 절감할 수 있습니다. 자세한 내용은 스토리지 리소스 관리 및 할당 가이드의 Red Hat OpenShift Container Storage 전용 작업자 노드를 사용하는 방법을 참조하십시오.

절차

  1. 웹 콘솔에서 Operator → OperatorHub 를 클릭하여 이동합니다.
  2. OpenShift Container Storage Operator를 검색하려면 키워드를 키워드로 필터링 상자에 입력하거나 입력합니다.
  3. OpenShift Container Storage Operator 페이지에서 설치를 클릭합니다.
  4. Operator 설치 페이지에서 기본적으로 다음 필수 옵션을 선택합니다.

    1. Channel을 stable-4.7 로 업데이트합니다.
    2. 설치 모드에서 클러스터의 특정 네임스페이스를 선택합니다.
    3. 설치된 네임스페이스에서 Operator 권장 네임스페이스 openshift-storage를 선책합니다. 네임스페이스 openshift-storage 가 없으면 Operator 설치 중에 생성됩니다.
    4. 승인 전략을 자동 또는 수동으로 선택합니다.
    5. 설치를 클릭합니다.

      자동 업데이트를 선택한 경우 OLM(Operator Lifecycle Manager)은 개입 없이 Operator의 실행 중인 인스턴스를 자동으로 업그레이드합니다.

      수동 업데이트를 선택한 경우 OLM에서 업데이트 요청을 생성합니다. 클러스터 관리자는 Operator를 새 버전으로 업데이트하려면 OLM 업데이트 요청을 수동으로 승인해야 합니다.

검증 단계

OpenShift Container Storage Operator에 성공적으로 설치를 나타내는 녹색 눈금이 표시되는지 확인합니다.

다음 단계

2.2. 내부 모드에서 OpenShift Container Storage 클러스터 서비스 생성

OpenShift Container Storage Operator를 설치한 후 OpenShift Container Storage Cluster Service를 생성하려면 다음 절차를 사용하십시오.

사전 요구 사항

절차

  1. OpenShift 웹 콘솔에 로그인합니다.
  2. Operator → 설치된 Operator를 클릭하여 설치된 모든 Operator를 확인합니다.

    선택한 프로젝트openshift-storage 인지 확인합니다.

  3. OpenShift Container Storage > 스토리지 클러스터의 인스턴스 생성 링크를 클릭합니다.
  4. 선택 모드는 기본적으로 Internal 로 설정됩니다.
  5. 용량 및 노드 선택에서

    1. 스토리지 클래스 를 선택합니다. 기본적으로 gp2 로 설정됩니다.
    2. 드롭다운 목록에서 Requested Capacity 를 선택합니다. 기본적으로 2TiB로 설정됩니다. 드롭 다운을 사용하여 용량 값을 수정할 수 있습니다.

      참고

      초기 스토리지 용량을 선택하면 선택한 사용 가능한 용량(3회의 원시 스토리지)만 클러스터 확장이 수행됩니다.

    3. 노드 선택 섹션에서 사용 가능한 노드를 3개 이상 선택합니다.

      여러 가용성 영역이 있는 클라우드 플랫폼의 경우 노드가 다른 위치/ 가용 영역에 분산되어 있는지 확인합니다.

      선택한 노드가 집계된 30 개의 CPU 및 72GiB RAM의 OpenShift Container Storage 클러스터 요구 사항과 일치하지 않으면 최소 클러스터가 배포됩니다. 최소 노드 요구 사항은 계획 가이드의 리소스 요구 사항 섹션을 참조하십시오.

    4. 다음을 클릭합니다.
  6. (선택 사항) 보안 구성

    1. 암호화 활성화 확인란을 선택하여 블록 및 파일 스토리지를 암호화합니다.
    2. 암호화 수준을 하나 또는 둘 다 선택합니다.

      • 전체 클러스터를 암호화하는 클러스터 전체 (블록 및 파일) 암호화
      • 암호화가 활성화된 스토리지 클래스 클래스 를 사용하여 암호화된 영구 볼륨(블록만 해당)을 생성하는 스토리지 클래스 암호화입니다.

        중요

        스토리지 클래스 암호화는 RBD PV에서만 사용할 수 있는 기술 프리뷰 기능입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

        자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

    3. 외부 키 관리 서비스에 연결 확인란을 선택합니다. 이는 클러스터 전체 암호화의 경우 선택 사항입니다.

      1. 키 관리 서비스 공급자는 기본적으로 Vault로 설정됩니다.
      2. Vault 서비스 이름, Vault 서버 호스트 주소 ('https://<hostname 또는 ip>), 포트 번호토큰 을 입력합니다.
      3. 고급 설정을 확장하여 Vault 구성에 따라 추가 설정 및 인증서 세부 정보를 입력합니다.

        1. OpenShift Container Storage 전용 및 고유한 백엔드 경로에 키 값 시크릿 경로를 입력합니다.
        2. TLS 서버 이름Vault Enterprise Namespace 를 입력합니다.
        3. 각 PEM 인코딩 인증서 파일을 업로드하여 CA인증서, 클라이언트 인증서클라이언트 개인 키를 제공합니다.
        4. 저장을 클릭합니다.
    4. 다음을 클릭합니다.
  7. 구성 세부 정보를 검토합니다. 구성 설정을 수정하려면 뒤로 이동하여 이전 구성 페이지로 돌아갑니다.
  8. 생성을 클릭합니다.
  9. Vault Key/Value (KV) 시크릿 엔진 API인 경우 configmap을 편집합니다. 버전 2는 KMS(Key Management System)를 통한 클러스터 전체 암호화에 사용됩니다.

    1. OpenShift 웹 콘솔에서 워크로드 → ConfigMaps 로 이동합니다.
    2. KMS 연결 세부 정보를 보려면 ocs-kms-connection-details 를 클릭합니다.
    3. configmap을 편집합니다.

      1. Action 메뉴(journal) → Edit ConfigMap 을 클릭합니다.
      2. VAULT_BACKEND 매개 변수를 v2 로 설정합니다.

        kind: ConfigMap
        apiVersion: v1
        metadata:
          name: ocs-kms-connection-details
        [...]
        data:
          KMS_PROVIDER: vault
          KMS_SERVICE_NAME: vault
        [...]
          VAULT_BACKEND: v2
        [...]
      3. 저장을 클릭합니다.

검증 단계

  1. 스토리지 클러스터 세부 정보 페이지에서 스토리지 클러스터 이름에 클러스터가 성공적으로 생성되었음을 나타내기 위해 옆에 녹색 틱이 표시됩니다.
  2. 설치된 스토리지 클러스터의 최종 상태가 단계로 표시되는지 확인합니다. 녹색 눈금 표시가 준비 되었는지 확인합니다.

    • Operator → 설치된 Operator → 스토리지 클러스터 링크를 클릭하여 스토리지 클러스터 설치 상태를 확인합니다.
    • 또는 Operator 세부 정보 탭에 있는 경우 Storage Cluster 탭을 클릭하여 상태를 볼 수 있습니다.
  3. OpenShift Container Storage의 모든 구성 요소가 성공적으로 설치되었는지 확인하려면 OpenShift Container Storage 설치 확인을 참조하십시오.

3장. 로컬 스토리지 장치를 사용하여 배포

로컬 스토리지 장치를 사용하여 OpenShift Container Platform에 OpenShift Container Storage를 배포하면 내부 클러스터 리소스를 생성할 수 있는 옵션이 제공됩니다. 이렇게 하면 기본 서비스가 내부 프로비저닝되므로 애플리케이션에서 추가 스토리지 클래스를 사용할 수 있습니다.

이 섹션을 사용하여 OpenShift Container Platform이 이미 설치된 Amazon EC2 스토리지에 OpenShift Container Storage를 최적화된 I3에 배포합니다.

중요

Amazon EC2 스토리지에 OpenShift Container Storage를 설치하면 Local Storage Operator를 사용하여 I3 인스턴스를 최적화된 것은 기술 프리뷰 기능입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다. Red Hat OpenShift Container Storage 배포는 3개의 작업자 노드에서 애플리케이션 또는 기타 워크로드를 실행하지 않고 새 클러스터를 가정합니다. 애플리케이션은 추가 작업자 노드에서 실행되어야 합니다.

또한 다음 단계를 진행하기 전에 OpenShift Container Storage 배포 준비 장에 있는 요구 사항을 해결했는지 확인하십시오.

3.1. 내부 로컬 스토리지를 사용한 배포 개요

로컬 스토리지를 사용하여 Red Hat OpenShift Container Storage를 배포하려면 다음 단계를 따르십시오.

3.2. Red Hat OpenShift Container Storage Operator 설치

Red Hat OpenShift Container Platform Operator Hub를 사용하여 Red Hat OpenShift Container Storage Operator를 설치할 수 있습니다.

사전 요구 사항

  • cluster-admin 및 Operator 설치 권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터에 액세스할 수 있습니다.
  • RuntimeClass 클러스터에 3개 이상의 작업자 노드가 있습니다.
  • 추가 리소스 요구 사항은 배포 계획을 참조하십시오.
참고
  • OpenShift Container Storage의 클러스터 수준 기본 노드 선택기를 재정의해야 하는 경우 명령줄 인터페이스에서 다음 명령을 사용하여 openshift-storage 네임스페이스에 대한 빈 노드 선택기를 지정할 수 있습니다(이 경우 openshift-storage 네임스페이스 생성).

    $ oc annotate namespace openshift-storage openshift.io/node-selector=
  • 노드를 infra 로 테인트하여 해당 노드에 Red Hat OpenShift Container Storage 리소스만 예약되도록 합니다. 이를 통해 서브스크립션 비용을 절감할 수 있습니다. 자세한 내용은 스토리지 리소스 관리 및 할당 가이드의 Red Hat OpenShift Container Storage 전용 작업자 노드를 사용하는 방법을 참조하십시오.

절차

  1. 웹 콘솔에서 Operator → OperatorHub 를 클릭하여 이동합니다.
  2. OpenShift Container Storage Operator를 검색하려면 키워드를 키워드로 필터링 상자에 입력하거나 입력합니다.
  3. OpenShift Container Storage Operator 페이지에서 설치를 클릭합니다.
  4. Operator 설치 페이지에서 기본적으로 다음 필수 옵션을 선택합니다.

    1. Channel을 stable-4.7 로 업데이트합니다.
    2. 설치 모드에서 클러스터의 특정 네임스페이스를 선택합니다.
    3. 설치된 네임스페이스에서 Operator 권장 네임스페이스 openshift-storage를 선책합니다. 네임스페이스 openshift-storage 가 없으면 Operator 설치 중에 생성됩니다.
    4. 승인 전략을 자동 또는 수동으로 선택합니다.
    5. 설치를 클릭합니다.

      자동 업데이트를 선택한 경우 OLM(Operator Lifecycle Manager)은 개입 없이 Operator의 실행 중인 인스턴스를 자동으로 업그레이드합니다.

      수동 업데이트를 선택한 경우 OLM에서 업데이트 요청을 생성합니다. 클러스터 관리자는 Operator를 새 버전으로 업데이트하려면 OLM 업데이트 요청을 수동으로 승인해야 합니다.

검증 단계

OpenShift Container Storage Operator에 성공적으로 설치를 나타내는 녹색 눈금이 표시되는지 확인합니다.

다음 단계

3.3. 로컬 스토리지 Operator 설치

절차

  1. OpenShift 웹 콘솔에 로그인합니다.
  2. Operators → OperatorHub를 클릭합니다.
  3. 키워드로 필터링.... 상자에서 로컬 스토리지를 입력하여 운영자 목록에서 Local Storage Operator를 검색하고 클릭합니다.
  4. 설치를 클릭합니다.
  5. Operator 설치 페이지에서 다음 옵션을 설정합니다.

    1. Channel을 stable-4.7로 업데이트
    2. 설치 모드에서 클러스터의 특정 네임스페이스를 선택합니다.
    3. 설치된 네임스페이스를 Operator 권장 네임스페이스 openshift-local-storage를 선택합니다.
    4. 자동승인 전략
  6. 설치를 클릭합니다.
  7. Local Storage Operator에 상태가 성공으로 표시되는지 확인합니다.

3.4. 사용 가능한 스토리지 장치 찾기

PV를 생성하기 전에 OpenShift Container Storage 레이블 cluster.ocs.openshift.io/openshift-storage=' 로 레이블이 지정된 3개 이상의 노드 각각에 대한 장치 이름을 확인하려면 다음 절차를 사용하십시오.

절차

  1. OpenShift Container Storage 레이블을 사용하여 노드 이름을 나열하고 확인합니다.

    $ oc get nodes -l cluster.ocs.openshift.io/openshift-storage=

    출력 예:

    NAME                                        STATUS   ROLES    AGE     VERSION
    ip-10-0-135-71.us-east-2.compute.internal    Ready    worker   6h45m   v1.16.2
    ip-10-0-145-125.us-east-2.compute.internal   Ready    worker   6h45m   v1.16.2
    ip-10-0-160-91.us-east-2.compute.internal    Ready    worker   6h45m   v1.16.2
  2. OpenShift Container Storage 리소스에 사용되는 각 노드에 로그인하고 사용 가능한 각 원시 블록 장치에 고유한 by-id 장치 이름을 찾습니다.

    $ oc debug node/<node name>

    출력 예:

    $ oc debug node/ip-10-0-135-71.us-east-2.compute.internal
    Starting pod/ip-10-0-135-71us-east-2computeinternal-debug ...
    To use host binaries, run `chroot /host`
    Pod IP: 10.0.135.71
    If you don't see a command prompt, try pressing enter.
    sh-4.2# chroot /host
    sh-4.4# lsblk
    NAME                         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    xvda                         202:0    0   120G  0 disk
    |-xvda1                      202:1    0   384M  0 part /boot
    |-xvda2                      202:2    0   127M  0 part /boot/efi
    |-xvda3                      202:3    0     1M  0 part
    `-xvda4                      202:4    0 119.5G  0 part
      `-coreos-luks-root-nocrypt 253:0    0 119.5G  0 dm   /sysroot
    nvme0n1                      259:0    0   2.3T  0 disk
    nvme1n1                      259:1    0   2.3T  0 disk

    이 예에서 선택한 노드의 사용 가능한 로컬 장치는 nvme0n1nvme1n1 입니다.

  3. 2단계에서 선택한 각 장치에 대한 고유 ID를 식별합니다.

    sh-4.4#  ls -l /dev/disk/by-id/ | grep Storage
    lrwxrwxrwx. 1 root root 13 Mar 17 16:24 nvme-Amazon_EC2_NVMe_Instance_Storage_AWS10382E5D7441494EC -> ../../nvme0n1
    lrwxrwxrwx. 1 root root 13 Mar 17 16:24 nvme-Amazon_EC2_NVMe_Instance_Storage_AWS60382E5D7441494EC -> ../../nvme1n1

    위의 예에서 두 로컬 장치의 ID는 다음과 같습니다.

    • nvme0n1: nvme-Amazon_EC2_NVMe_Instance_Storage_AWS10382E5D7441494EC
    • nvme1n1: nvme-Amazon_EC2_NVMe_Instance_Storage_AWS60382E5D7441494EC
  4. 위의 단계를 반복하여 OpenShift Container Storage에서 사용할 스토리지 장치가 있는 다른 모든 노드의 장치 ID를 확인합니다. 자세한 내용은 이 기술 자료 문서를 참조하십시오.

3.5. Amazon EC2 스토리지에서 OpenShift Container Storage 클러스터 생성을 최적화 - i3en.2xlarge 인스턴스 유형

다음 절차를 사용하여 Amazon EC2(스토리지 최적화 - i3en.2xlarge 인스턴스 유형) 인프라에서 OpenShift Container Storage 클러스터를 생성합니다.

  1. LocalVolume CR을 사용하여 PV 생성
  2. StorageClass만들기

Amazon EC2 스토리지 최적화 - i3en.2xlarge 인스턴스 유형에는 두 개의 비휘발성 메모리 표현(NVMe) 디스크가 포함됩니다. 이 절차의 예제에서는 인스턴스 유형의 디스크가 모두 함께 제공되는 디스크를 사용하는 방법을 보여줍니다.

Amazon EC2 I3의 임시 스토리지를 사용하는 경우

  • 세 가지 가용성 영역을 사용하여 모든 데이터 손실 위험을 줄입니다.
  • 실수로 인스턴스 종료를 방지하려면 ec2:StopInstances 권한으로 사용자 수를 제한합니다.
주의

세 개의 노드를 모두 중지하면 데이터가 손실될 수 있으므로 OpenShift Container Storage 영구 데이터에 Amazon EC2 I3의 임시 스토리지를 사용하지 않는 것이 좋습니다.

다음 시나리오에서는 Amazon EC2 I3의 임시 스토리지를 사용하는 것이 좋습니다.

  • 특정 데이터 증가에 대한 다른 위치에서 데이터를 복사하는 클라우드 버스트
  • 개발 또는 테스트 환경
중요

Amazon EC2 스토리지에 OpenShift Container Storage를 설치하면 로컬 스토리지 운영자를 사용하여 i3en.2xlarge 인스턴스가 기술 프리뷰 기능입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

사전 요구 사항

  • 로컬 스토리지 장치를 사용하여 OpenShift Container Storage 설치 요구 사항 섹션의 모든 요구 사항이 충족되었는지 확인합니다.
  • OpenShift Container Platform 작업자 노드에는 nodeSelector 로 사용되는 OpenShift Container Storage의 레이블이 지정되어 있는지 확인합니다.

    oc get nodes -l cluster.ocs.openshift.io/openshift-storage -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}'

    출력 예:

    ip-10-0-135-71.us-east-2.compute.internal
    ip-10-0-145-125.us-east-2.compute.internal
    ip-10-0-160-91.us-east-2.compute.internal

절차

  1. LocalVolume CR(사용자 정의 리소스)을 사용하여 스토리지 노드에서 로컬 PV(영구 볼륨)를 생성합니다.

    OpenShift Storage Container 레이블을 노드 선택기 및 by-id 장치 식별자로 사용하는 LocalVolume CR local-storage-block.yaml 의 예:

    apiVersion: local.storage.openshift.io/v1
    kind: LocalVolume
    metadata:
      name: local-block
      namespace: openshift-local-storage
      labels:
        app: ocs-storagecluster
    spec:
      tolerations:
      - key: "node.ocs.openshift.io/storage"
        value: "true"
        effect: NoSchedule
      nodeSelector:
        nodeSelectorTerms:
          - matchExpressions:
              - key: cluster.ocs.openshift.io/openshift-storage
                operator: In
                values:
                  - ''
      storageClassDevices:
        - storageClassName: localblock
          volumeMode: Block
          devicePaths:
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS10382E5D7441494EC   # <-- modify this line
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS1F45C01D7E84FE3E9   # <-- modify this line
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS136BC945B4ECB9AE4   # <-- modify this line
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS10382E5D7441464EP   # <-- modify this line
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS1F45C01D7E84F43E7   # <-- modify this line
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS136BC945B4ECB9AE8   # <-- modify this line

    각 Amazon EC2 I3 인스턴스에는 두 개의 디스크가 있으며 이 예에서는 각 노드의 디스크를 모두 사용합니다.

  2. LocalVolume CR을 생성합니다.

    $ oc create -f local-storage-block.yaml

    출력 예:

    localvolume.local.storage.openshift.io/local-block created
  3. Pod가 생성되었는지 확인합니다.

    $ oc -n openshift-local-storage get pods
  4. PV가 생성되었는지 확인합니다.

    3개의 작업자 노드에 각각 로컬 스토리지 장치에 대한 새 PV가 표시되어야 합니다. 각 노드에 대해 작업자 노드당 사용 가능한 스토리지 장치 두 개와 함께 사용 가능한 스토리지 장치 찾기 섹션에서 예제를 참조하십시오.

    $ oc get pv

    출력 예:

    NAME               CAPACITY ACCESS MODES  RECLAIM POLICY STATUS       CLAIM     STORAGECLASS  REASON   AGE
    local-pv-1a46bc79  2328Gi   RWO           Delete         Available              localblock             14m
    local-pv-429d90ee  2328Gi   RWO           Delete         Available              localblock             14m
    local-pv-4d0a62e3  2328Gi   RWO           Delete         Available              localblock             14m
    local-pv-55c05d76  2328Gi   RWO           Delete         Available              localblock             14m
    local-pv-5c7b0990  2328Gi   RWO           Delete         Available              localblock             14m
    local-pv-a6b283b   2328Gi   RWO           Delete         Available              localblock             14m
  5. LocalVolume CR이 생성될 때 이제 존재하는 새 StorageClass 를 확인합니다. 이 StorageClass 는 다음 단계에서 스토리지 클러스터 PVC를 제공하는 데 사용됩니다.

    $ oc get sc | grep localblock

    출력 예:

    NAME            PROVISIONER                    RECLAIMPOLICY
    VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION     AGE
    localblock      kubernetes.io/no-provisioner   Delete
    WaitForFirstConsumer  false                15m
  6. Local Storage Operator에서 생성한 PV를 사용하기 위해 localblock StorageClass를 사용하는 StorageCluster CR을 생성합니다.

    monDataDirHostPathlocalblock StorageClass를 사용하는 StorageCluster CR ocs-cluster-service.yaml 의 예입니다.

    apiVersion: ocs.openshift.io/v1
    kind: StorageCluster
    metadata:
      name: ocs-storagecluster
      namespace: openshift-storage
    spec:
      manageNodes: false
      resources:
        mds:
          limits:
            cpu: 3
            memory: 8Gi
          requests:
            cpu: 1
            memory: 8Gi
      monDataDirHostPath: /var/lib/rook
      storageDeviceSets:
        - count: 2
          dataPVCTemplate:
            spec:
              accessModes:
                - ReadWriteOnce
              resources:
                requests:
                  storage: 2328Gi
              storageClassName: localblock
              volumeMode: Block
          name: ocs-deviceset
          placement: {}
          portable: false
          replica: 3
          resources:
            limits:
              cpu: 2
              memory: 5Gi
            requests:
              cpu: 1
              memory: 5Gi
    중요

    OSD에 노드에서 크기가 보장되도록 하려면 노드에서 생성된 PV의 크기보다 작거나 같은 storageDeviceSets 의 스토리지 크기를 지정해야 합니다.

  7. 스토리지 클러스터 CR을 생성합니다.

    $ oc create -f ocs-cluster-service.yaml

    출력 예

    storagecluster.ocs.openshift.io/ocs-cluster-service created

검증 단계

OpenShift Container Storage 설치 확인을 참조하십시오.

4장. 내부 모드를 위한 OpenShift Container Storage 배포 확인

이 섹션을 사용하여 OpenShift Container Storage가 올바르게 배포되었는지 확인합니다.

4.1. Pod 상태 확인

OpenShift Container 스토리지가 성공적으로 배포되었는지 확인하려면 Pod가 Running 상태인지 확인할 수 있습니다.

절차

  1. OpenShift 웹 콘솔의 왼쪽 창에서 워크로드 → 포드 를 클릭합니다.
  2. 프로젝트 드롭다운 목록에서 openshift-storage 를 선택합니다.

    각 구성 요소에 대해 예상되는 Pod 수와 노드 수에 따라 달라지는 방법에 대한 자세한 내용은 표 4.1. “OpenShift Container Storage 클러스터에 해당하는 Pod” 을 참조하십시오.

  3. RunningCompleted 탭을 클릭하여 다음 Pod가 실행 중이고 완료된 상태인지 확인합니다.

    표 4.1. OpenShift Container Storage 클러스터에 해당하는 Pod

    구성 요소해당 Pod

    OpenShift Container Storage Operator

    • OCS-operator-* (모든 작업자 노드에 1 Pod)
    • ocs-metrics-exporter-*

    Rook-ceph Operator

    rook-ceph-operator-*

    (모든 작업자 노드에 1 Pod)

    Multicloud Object Gateway

    • NooBaa-operator-* (모든 작업자 노드에 1 Pod)
    • NooBaa-core-* (모든 스토리지 노드에 1 Pod)
    • NooBaa-db-pg-* (모든 스토리지 노드에 1 Pod)
    • NooBaa-endpoint-* (모든 스토리지 노드에 1 Pod)

    MON

    rook-ceph-mon-*

    (스토리지 노드에 분산된 3 Pod)

    MGR

    rook-ceph-mgr-*

    (모든 스토리지 노드에 1 Pod)

    MDS

    rook-ceph-mds-ocs-storagecluster-cephfilesystem-*

    (스토리지 노드에 분산된 2 Pod)

    CSI

    • cephfs

      • CSI-cephfsplugin-* (모든 작업자 노드에 1 Pod)
      • CSI-cephfsplugin-provisioner-* (작업자 노드에 분산된 2 Pod)
    • rbd

      • CSI-rbdplugin-* (각 작업자 노드에서 1 Pod)
      • CSI-rbdplugin-provisioner-* (2 작업자 노드에 분산된 2 Pod)

    rook-ceph-crashcollector

    rook-ceph-crashcollector-*

    (각 스토리지 노드에서 1 pod)

    OSD

    • rook-ceph-osd-* (각 장치의 1 Pod)
    • rook-ceph-osd-prepare-ocs-deviceset-* (각 장치의 1 Pod)

4.2. OpenShift Container Storage 클러스터가 정상인지 확인

  • OpenShift 웹 콘솔의 왼쪽 창에서 홈 → 개요 를 클릭하고 영구 스토리지 탭을 클릭합니다.
  • 상태 카드에서 OCS ClusterData Resiliency 에 다음 이미지에 표시된 것처럼 녹색 눈금이 있는지 확인합니다.

    그림 4.1. 영구 스토리지 개요 대시보드의 상태 카드

    영구 스토리지 대시보드의 상태 카드 스크린샷
  • 세부 정보 카드에서 다음과 같이 클러스터 정보가 표시되는지 확인합니다.

    서비스 이름
    OpenShift Container Storage
    클러스터 이름
    ocs-storagecluster
    공급자
    AWS
    mode
    내부
    버전
    ocs-operator-4.7.0

영구 스토리지 대시보드를 사용하여 OpenShift Container Storage 클러스터의 상태에 대한 자세한 내용은 Monitoring OpenShift Container Storage 를 참조하십시오.

4.3. Multicloud Object Gateway의 상태 확인

  • OpenShift 웹 콘솔의 왼쪽 창에서 홈 → 개요 를 클릭하고 오브젝트 서비스 탭을 클릭합니다.
  • 상태 카드에서 Object ServiceData Resiliency 가 모두 Ready 상태(Green tick) 상태인지 확인합니다.

    그림 4.2. 오브젝트 서비스 개요 대시보드의 상태 카드

    오브젝트 서비스 대시보드에서 상태 카드 스크린샷
  • 세부 정보 카드에서 MCG 정보가 다음과 같이 표시되는지 확인합니다.

    서비스 이름
    OpenShift Container Storage
    시스템 이름
    Multicloud Object Gateway
    공급자
    AWS
    버전
    ocs-operator-4.7.0

오브젝트 서비스 대시보드를 사용하는 OpenShift Container Storage 클러스터의 상태에 대한 자세한 내용은 Monitoring OpenShift Container Storage 를 참조하십시오.

4.4. OpenShift Container Storage 특정 스토리지 클래스가 있는지 확인

클러스터에 스토리지 클래스가 있는지 확인하려면 다음을 수행합니다.

  • OpenShift 웹 콘솔의 왼쪽 창에서 스토리지 → 스토리지 클래스를 클릭합니다.
  • OpenShift Container Storage 클러스터 생성으로 다음 스토리지 클래스가 생성되었는지 확인합니다.

    • ocs-storagecluster-ceph-rbd
    • ocs-storagecluster-cephfs
    • openshift-storage.noobaa.io

5장. OpenShift Container Storage 설치 제거

5.1. 내부 모드에서 OpenShift Container Storage 설치 제거

이 섹션의 단계를 사용하여 OpenShift Container Storage를 설치 제거합니다.

주석 제거

스토리지 클러스터의 주석은 제거 프로세스의 동작을 변경하는 데 사용됩니다. 제거 동작을 정의하기 위해 스토리지 클러스터에 다음 두 개의 주석이 도입되었습니다.

  • uninstall.ocs.openshift.io/cleanup-policy: delete
  • uninstall.ocs.openshift.io/mode: normal

아래 표는 이러한 주석과 함께 사용할 수 있는 다양한 값에 대한 정보를 제공합니다.

표 5.1. uninstall.ocs.openshift.io 제거 주석 설명

주석기본값동작

cleanup-policy

delete

있음

rook은 물리적 드라이브와 DataDirHostPath를 정리합니다.

cleanup-policy

유지

없음

rook은 물리적 드라이브와 DataDirHostPath를 정리 하지 않습니다.

mode

정상

있음

Rook 및 NooBaa는 PVC와 OBC가 관리자/사용자가 제거될 때까지 제거 프로세스를 일시 중지합니다.

mode

강제

없음

rook 및 NooBaa는 Rook 및 NooBaa를 사용하여 프로비저닝된 PVC/OBC가 각각 존재하는 경우에도 제거를 진행합니다.

다음 명령을 사용하여 주석의 값을 편집하여 정리 정책 또는 제거 모드를 변경할 수 있습니다.

$ oc annotate storagecluster -n openshift-storage ocs-storagecluster uninstall.ocs.openshift.io/cleanup-policy="retain" --overwrite
storagecluster.ocs.openshift.io/ocs-storagecluster annotated
$ oc annotate storagecluster -n openshift-storage ocs-storagecluster uninstall.ocs.openshift.io/mode="forced" --overwrite
storagecluster.ocs.openshift.io/ocs-storagecluster annotated

사전 요구 사항

  • OpenShift Container Storage 클러스터가 정상 상태인지 확인합니다. 리소스 또는 노드가 부족하여 일부 Pod가 종료되지 않으면 설치 제거 프로세스가 실패할 수 있습니다. 클러스터가 비정상 상태인 경우 OpenShift Container Storage를 제거하기 전에 Red Hat 고객 지원에 문의하십시오.
  • OpenShift Container Storage에서 제공하는 스토리지 클래스를 사용하여 애플리케이션이 PVC(영구 볼륨 클레임) 또는 오브젝트 버킷 클레임(OBC)을 사용하지 않는지 확인합니다.
  • 관리자가 사용자 지정 스토리지 클래스(예: 사용자 지정 스토리지 클래스, cephblockpool)를 생성하는 경우 해당 리소스(예: 사용자 지정 스토리지 클래스)를 사용한 리소스를 제거한 후 관리자가 삭제해야 합니다.

절차

  1. OpenShift Container Storage를 사용하는 볼륨 스냅샷을 삭제합니다.

    1. 모든 네임스페이스의 볼륨 스냅샷을 나열합니다.

      $ oc get volumesnapshot --all-namespaces
    2. 이전 명령의 출력에서 OpenShift Container Storage를 사용하는 볼륨 스냅샷을 식별하고 삭제합니다.

      $ oc delete volumesnapshot <VOLUME-SNAPSHOT-NAME> -n <NAMESPACE>
  2. OpenShift Container Storage를 사용하는 PVC 및 OBC를 삭제합니다.

    기본 제거 모드(graceful)에서 제거 프로그램은 OpenShift Container Storage를 사용하는 모든 PVC 및 OBC가 삭제될 때까지 기다립니다.

    PVC를 미리 삭제하지 않고 Storage Cluster를 삭제하려면 제거 모드 주석을 "forced"로 설정하고 이 단계를 건너뛸 수 있습니다. 이렇게 하면 시스템의 PVC 및 OBC가 생성됩니다.

    1. OpenShift Container Storage를 사용하여 OpenShift Container Platform 모니터링 스택 PVC를 삭제합니다.

      보기 5.2절. “OpenShift Container Storage에서 모니터링 스택 제거”

    2. OpenShift Container Storage를 사용하여 OpenShift Container Platform 레지스트리 PVC를 삭제합니다.

      보기 5.3절. “OpenShift Container Storage에서 OpenShift Container Platform 레지스트리 제거”

    3. OpenShift Container Storage를 사용하여 OpenShift Container Platform 로깅 PVC를 삭제합니다.

      보기 5.4절. “OpenShift Container Storage에서 클러스터 로깅 Operator 제거”

    4. OpenShift Container Storage를 사용하여 프로비저닝된 다른 PVC 및 OBC를 삭제합니다.

      • 아래는 OpenShift Container Storage를 사용하여 프로비저닝된 PVC 및 OBC를 식별하는 샘플 스크립트입니다. 이 스크립트는 Openshift Container Storage에서 내부적으로 사용하는 PVC를 무시합니다.

        #!/bin/bash
        
        RBD_PROVISIONER="openshift-storage.rbd.csi.ceph.com"
        CEPHFS_PROVISIONER="openshift-storage.cephfs.csi.ceph.com"
        NOOBAA_PROVISIONER="openshift-storage.noobaa.io/obc"
        RGW_PROVISIONER="openshift-storage.ceph.rook.io/bucket"
        
        NOOBAA_DB_PVC="noobaa-db"
        NOOBAA_BACKINGSTORE_PVC="noobaa-default-backing-store-noobaa-pvc"
        
        # Find all the OCS StorageClasses
        OCS_STORAGECLASSES=$(oc get storageclasses | grep -e "$RBD_PROVISIONER" -e "$CEPHFS_PROVISIONER" -e "$NOOBAA_PROVISIONER" -e "$RGW_PROVISIONER" | awk '{print $1}')
        
        # List PVCs in each of the StorageClasses
        for SC in $OCS_STORAGECLASSES
        do
                echo "======================================================================"
                echo "$SC StorageClass PVCs and OBCs"
                echo "======================================================================"
                oc get pvc  --all-namespaces --no-headers 2>/dev/null | grep $SC | grep -v -e "$NOOBAA_DB_PVC" -e "$NOOBAA_BACKINGSTORE_PVC"
                oc get obc  --all-namespaces --no-headers 2>/dev/null | grep $SC
                echo
        done
        참고

        클라우드 플랫폼에 대해 RGW_PROVISIONER 를 생략합니다.

      • OBC를 삭제합니다.

        $ oc delete obc <obc name> -n <project name>
      • PVC를 삭제합니다.

        $ oc delete pvc <pvc name> -n <project-name>
        참고

        클러스터에서 생성된 사용자 정의 백업 저장소, 버킷 클래스 등을 제거했는지 확인합니다.

  3. Storage Cluster 오브젝트를 삭제하고 관련 리소스가 제거될 때까지 기다립니다.

    $ oc delete -n openshift-storage storagecluster --all --wait=true
  4. uninstall.ocs.openshift.io/cleanup-policydelete(기본값)로 설정된 경우 정리 Pod가 있는지 확인하고 해당 상태가 Completed 인지 확인합니다.

    $ oc get pods -n openshift-storage | grep -i cleanup
    NAME                                READY   STATUS      RESTARTS   AGE
    cluster-cleanup-job-<xx>        	0/1     Completed   0          8m35s
    cluster-cleanup-job-<yy>     		0/1     Completed   0          8m35s
    cluster-cleanup-job-<zz>     		0/1     Completed   0          8m35s
  5. /var/lib/rook 디렉터리가 이제 비어 있는지 확인합니다. 이 디렉터리는 uninstall.ocs.openshift.io/cleanup-policy 주석이 delete(기본값)로 설정된 경우에만 비어 있습니다.

    $ for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host  ls -l /var/lib/rook; done
  6. 설치 시 암호화가 활성화된 경우 모든 OpenShift Container Storage 노드의 OSD 장치에서 dm-crypt 관리 장치-mapper 매핑을 제거합니다.

    1. 스토리지 노드의 호스트에 디버그 Pod 및 chroot 를 생성합니다.

      $ oc debug node/<node name>
      $ chroot /host
    2. 장치 이름을 가져오고 OpenShift Container Storage 장치를 기록해 둡니다.

      $ dmsetup ls
      ocs-deviceset-0-data-0-57snx-block-dmcrypt (253:1)
    3. 매핑된 장치를 제거합니다.

      $ cryptsetup luksClose --debug --verbose ocs-deviceset-0-data-0-57snx-block-dmcrypt
      참고

      충분하지 않은 권한으로 인해 위 명령이 중단되는 경우 다음 명령을 실행합니다.

      • CTRL+Z 를 눌러 위의 명령을 종료합니다.
      • 정지된 프로세스의 PID를 찾습니다.

        $ ps -ef | grep crypt
      • kill 명령을 사용하여 프로세스를 종료합니다.

        $ kill -9 <PID>
      • 장치 이름이 제거되었는지 확인합니다.

        $ dmsetup ls
  7. 네임스페이스를 삭제하고 삭제가 완료될 때까지 기다립니다. openshift-storage 가 활성 프로젝트인 경우 다른 프로젝트로 전환해야 합니다.

    예를 들면 다음과 같습니다.

    $ oc project default
    $ oc delete project openshift-storage --wait=true --timeout=5m

    다음 명령에서 NotFound 오류를 반환하는 경우 프로젝트가 삭제됩니다.

    $ oc get project openshift-storage
    참고

    OpenShift Container Storage를 설치 제거할 때 네임스페이스 가 완전히 삭제되지 않고 상태가 종료 인 경우 Uninstall 중 나머지 리소스를 삭제하여 네임스페이스가 종료되지 않는 오브젝트를 식별하는 단계를 수행합니다.

  8. 로컬 스토리지 장치를 사용하여 OpenShift Container Storage를 배포한 경우 로컬 스토리지 Operator 구성을 삭제합니다. 로컬 스토리지 Operator 구성 제거를 참조하십시오.
  9. 스토리지 노드의 레이블을 지정 해제합니다.

    $ oc label nodes  --all cluster.ocs.openshift.io/openshift-storage-
    $ oc label nodes  --all topology.rook.io/rack-
  10. 노드가 테인트된 경우 OpenShift Container Storage 테인트를 제거합니다.

    $ oc adm taint nodes --all node.ocs.openshift.io/storage-
  11. OpenShift Container Storage를 사용하여 프로비저닝된 모든 PV가 삭제되었는지 확인합니다. Released 상태에 PV가 남아 있으면 삭제합니다.

    $ oc get pv
    $ oc delete pv <pv name>
  12. Multicloud Object Gateway 스토리지 클래스를 삭제합니다.

    $ oc delete storageclass openshift-storage.noobaa.io --wait=true --timeout=5m
  13. CustomResourceDefinitions 를 제거합니다.

    $ oc delete crd backingstores.noobaa.io bucketclasses.noobaa.io cephblockpools.ceph.rook.io cephclusters.ceph.rook.io cephfilesystems.ceph.rook.io cephnfses.ceph.rook.io cephobjectstores.ceph.rook.io cephobjectstoreusers.ceph.rook.io noobaas.noobaa.io ocsinitializations.ocs.openshift.io storageclusters.ocs.openshift.io cephclients.ceph.rook.io cephobjectrealms.ceph.rook.io cephobjectzonegroups.ceph.rook.io cephobjectzones.ceph.rook.io cephrbdmirrors.ceph.rook.io --wait=true --timeout=5m
  14. 선택 사항: 자격 증명 모음 키가 영구적으로 삭제되도록 하려면 vault 키와 연결된 메타데이터를 수동으로 삭제해야 합니다.

    참고

    Vault Key/Value (KV) 시크릿 엔진 API인 경우에만 이 단계를 실행합니다. OpenShift Container Storage 제거 중에 자격 증명 키가 삭제되어 영구적으로 삭제되지 않으므로 버전 2는 KMS(Key Management System)를 사용한 클러스터 전체 암호화에 사용됩니다. 필요한 경우 나중에 언제든지 복원할 수 있습니다.

    1. 자격 증명 모음의 키를 나열합니다.

      $ vault kv list <backend_path>
      <backend_path>

      암호화 키가 저장된 자격 증명 모음의 경로입니다.

      예를 들면 다음과 같습니다.

      $ vault kv list kv-v2

      출력 예:

      Keys
      -----
      NOOBAA_ROOT_SECRET_PATH/
      rook-ceph-osd-encryption-key-ocs-deviceset-thin-0-data-0m27q8
      rook-ceph-osd-encryption-key-ocs-deviceset-thin-1-data-0sq227
      rook-ceph-osd-encryption-key-ocs-deviceset-thin-2-data-0xzszb
    2. vault 키와 연결된 메타데이터를 나열합니다.

      $ vault kv get kv-v2/<key>

      MCG(Multicloud Object Gateway) 키의 경우 다음을 수행합니다.

      $ vault kv get kv-v2/NOOBAA_ROOT_SECRET_PATH/<key>
      <key>

      암호화 키입니다.

      예를 들면 다음과 같습니다.

      $ vault kv get kv-v2/rook-ceph-osd-encryption-key-ocs-deviceset-thin-0-data-0m27q8

      출력 예:

      ====== Metadata ======
      Key              Value
      ---              -----
      created_time     2021-06-23T10:06:30.650103555Z
      deletion_time    2021-06-23T11:46:35.045328495Z
      destroyed        false
      version          1
    3. 메타데이터를 삭제합니다.

      $ vault kv metadata delete kv-v2/<key>

      MCG 키의 경우:

      $ vault kv metadata delete kv-v2/NOOBAA_ROOT_SECRET_PATH/<key>
      <key>

      암호화 키입니다.

      예를 들면 다음과 같습니다.

      $ vault kv metadata delete kv-v2/rook-ceph-osd-encryption-key-ocs-deviceset-thin-0-data-0m27q8

      출력 예:

      Success! Data deleted (if it existed) at: kv-v2/metadata/rook-ceph-osd-encryption-key-ocs-deviceset-thin-0-data-0m27q8
    4. 모든 자격 증명 모음 키와 연결된 메타데이터를 삭제하려면 이 단계를 반복합니다.
  15. OpenShift Container Platform 웹 콘솔에서 OpenShift Container Storage를 완전히 제거하려면 다음을 수행합니다.

    1. 홈 → 개요 를 클릭하여 대시보드에 액세스합니다.
    2. 클러스터 탭 옆에 영구 스토리지 및 Object Service 탭이 더 이상 표시되지 않는지 확인합니다.

5.1.1. 로컬 스토리지 Operator 구성 제거

로컬 스토리지 장치를 사용하여 OpenShift Container Storage를 배포한 경우에만 이 섹션의 지침을 사용하십시오.

참고

OpenShift Container Storage 배포의 경우 localvolume 리소스만 사용하는 경우 8 단계로 직접 이동합니다.

절차

  1. OpenShift Container Storage에서 사용하는 LocalVolumeSet 및 해당 StorageClassName 을 식별합니다.
  2. LocalVolumeSet 을 제공하는 StorageClass 로 변수 SC를 설정합니다.

    $ export SC="<StorageClassName>"
  3. LocalVolumeSet 을 삭제합니다.

    $ oc delete localvolumesets.local.storage.openshift.io <name-of-volumeset> -n openshift-local-storage
  4. 지정된 StorageClassName 의 로컬 스토리지 PV를 삭제합니다.

    $ oc get pv | grep $SC | awk '{print $1}'| xargs oc delete pv
  5. StorageClassName 을 삭제합니다.

    $ oc delete sc $SC
  6. LocalVolumeSet 에서 만든 심볼릭 링크를 삭제합니다.

    [[ ! -z $SC ]] && for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host rm -rfv /mnt/local-storage/${SC}/; done
  7. LocalVolumeDiscovery 를 삭제합니다.

    $ oc delete localvolumediscovery.local.storage.openshift.io/auto-discover-devices -n openshift-local-storage
  8. LocalVolume 리소스 제거(있는 경우).

    현재 또는 이전 OpenShift Container Storage 버전의 PV를 프로비저닝하는 데 사용된 LocalVolume 리소스를 제거하려면 다음 단계를 사용합니다. 또한 클러스터의 다른 테넌트에서 이러한 리소스를 사용하지 않는지 확인합니다.

    각 로컬 볼륨에 대해 다음을 수행합니다.

    1. OpenShift Container Storage에서 사용하는 LocalVolume 및 해당 StorageClassName 을 식별합니다.
    2. LocalVolume 및 변수 SC의 이름으로 변수 LV를 StorageClass의 이름으로 설정합니다.

      예를 들면 다음과 같습니다.

      $ LV=local-block
      $ SC=localblock
    3. 로컬 볼륨 리소스를 삭제합니다.

      $ oc delete localvolume -n openshift-local-storage --wait=true $LV
    4. 나머지 PV 및 StorageClass가 있는 경우 삭제합니다.

      $ oc delete pv -l storage.openshift.com/local-volume-owner-name=${LV} --wait --timeout=5m
      $ oc delete storageclass $SC --wait --timeout=5m
    5. 해당 리소스의 스토리지 노드에서 아티팩트를 정리합니다.

      $ [[ ! -z $SC ]] && for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host rm -rfv /mnt/local-storage/${SC}/; done

      출력 예:

      Starting pod/node-xxx-debug ...
      To use host binaries, run `chroot /host`
      removed '/mnt/local-storage/localblock/nvme2n1'
      removed directory '/mnt/local-storage/localblock'
      
      Removing debug pod ...
      Starting pod/node-yyy-debug ...
      To use host binaries, run `chroot /host`
      removed '/mnt/local-storage/localblock/nvme2n1'
      removed directory '/mnt/local-storage/localblock'
      
      Removing debug pod ...
      Starting pod/node-zzz-debug ...
      To use host binaries, run `chroot /host`
      removed '/mnt/local-storage/localblock/nvme2n1'
      removed directory '/mnt/local-storage/localblock'
      
      Removing debug pod ...

5.2. OpenShift Container Storage에서 모니터링 스택 제거

OpenShift Container Storage에서 모니터링 스택을 정리하려면 이 섹션을 사용합니다.

모니터링 스택 구성의 일부로 생성된 PVC는 openshift-monitoring 네임스페이스에 있습니다.

사전 요구 사항

  • OpenShift Container Platform 모니터링 스택을 사용하도록 PVC가 구성됩니다.

    자세한 내용은 모니터링 스택 구성을 참조하십시오.

절차

  1. openshift-monitoring 네임스페이스에서 현재 실행 중인 Pod 및 PVC를 나열합니다.

    $ oc get pod,pvc -n openshift-monitoring
    NAME                           READY   STATUS    RESTARTS   AGE
    pod/alertmanager-main-0         3/3     Running   0          8d
    pod/alertmanager-main-1         3/3     Running   0          8d
    pod/alertmanager-main-2         3/3     Running   0          8d
    pod/cluster-monitoring-
    operator-84457656d-pkrxm        1/1     Running   0          8d
    pod/grafana-79ccf6689f-2ll28    2/2     Running   0          8d
    pod/kube-state-metrics-
    7d86fb966-rvd9w                 3/3     Running   0          8d
    pod/node-exporter-25894         2/2     Running   0          8d
    pod/node-exporter-4dsd7         2/2     Running   0          8d
    pod/node-exporter-6p4zc         2/2     Running   0          8d
    pod/node-exporter-jbjvg         2/2     Running   0          8d
    pod/node-exporter-jj4t5         2/2     Running   0          6d18h
    pod/node-exporter-k856s         2/2     Running   0          6d18h
    pod/node-exporter-rf8gn         2/2     Running   0          8d
    pod/node-exporter-rmb5m         2/2     Running   0          6d18h
    pod/node-exporter-zj7kx         2/2     Running   0          8d
    pod/openshift-state-metrics-
    59dbd4f654-4clng                3/3     Running   0          8d
    pod/prometheus-adapter-
    5df5865596-k8dzn                1/1     Running   0          7d23h
    pod/prometheus-adapter-
    5df5865596-n2gj9                1/1     Running   0          7d23h
    pod/prometheus-k8s-0            6/6     Running   1          8d
    pod/prometheus-k8s-1            6/6     Running   1          8d
    pod/prometheus-operator-
    55cfb858c9-c4zd9                1/1     Running   0          6d21h
    pod/telemeter-client-
    78fc8fc97d-2rgfp                3/3     Running   0          8d
    
    NAME                                                              STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                  AGE
    persistentvolumeclaim/my-alertmanager-claim-alertmanager-main-0   Bound    pvc-0d519c4f-15a5-11ea-baa0-026d231574aa   40Gi       RWO            ocs-storagecluster-ceph-rbd   8d
    persistentvolumeclaim/my-alertmanager-claim-alertmanager-main-1   Bound    pvc-0d5a9825-15a5-11ea-baa0-026d231574aa   40Gi       RWO            ocs-storagecluster-ceph-rbd   8d
    persistentvolumeclaim/my-alertmanager-claim-alertmanager-main-2   Bound    pvc-0d6413dc-15a5-11ea-baa0-026d231574aa   40Gi       RWO            ocs-storagecluster-ceph-rbd   8d
    persistentvolumeclaim/my-prometheus-claim-prometheus-k8s-0        Bound    pvc-0b7c19b0-15a5-11ea-baa0-026d231574aa   40Gi       RWO            ocs-storagecluster-ceph-rbd   8d
    persistentvolumeclaim/my-prometheus-claim-prometheus-k8s-1        Bound    pvc-0b8aed3f-15a5-11ea-baa0-026d231574aa   40Gi       RWO            ocs-storagecluster-ceph-rbd   8d
  2. 모니터링 구성 맵을 편집합니다.

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
  3. 다음 예와 같이 OpenShift Container Storage 스토리지 클래스를 참조하는 구성 섹션을 제거하고 저장합니다.

    편집 전

    .
    .
    .
    apiVersion: v1
    data:
      config.yaml: |
        alertmanagerMain:
          volumeClaimTemplate:
            metadata:
              name: my-alertmanager-claim
            spec:
              resources:
                requests:
                  storage: 40Gi
              storageClassName: ocs-storagecluster-ceph-rbd
        prometheusK8s:
          volumeClaimTemplate:
            metadata:
              name: my-prometheus-claim
            spec:
              resources:
                requests:
                  storage: 40Gi
              storageClassName: ocs-storagecluster-ceph-rbd
    kind: ConfigMap
    metadata:
      creationTimestamp: "2019-12-02T07:47:29Z"
      name: cluster-monitoring-config
      namespace: openshift-monitoring
      resourceVersion: "22110"
      selfLink: /api/v1/namespaces/openshift-monitoring/configmaps/cluster-monitoring-config
      uid: fd6d988b-14d7-11ea-84ff-066035b9efa8
    .
    .
    .

    편집 후

    .
    .
    .
    apiVersion: v1
    data:
      config.yaml: |
    kind: ConfigMap
    metadata:
      creationTimestamp: "2019-11-21T13:07:05Z"
      name: cluster-monitoring-config
      namespace: openshift-monitoring
      resourceVersion: "404352"
      selfLink: /api/v1/namespaces/openshift-monitoring/configmaps/cluster-monitoring-config
      uid: d12c796a-0c5f-11ea-9832-063cd735b81c
    .
    .
    .

    이 예에서는 alertmanagerMainprometheusK8s 모니터링 구성 요소가 OpenShift Container Storage PVC를 사용하고 있습니다.

  4. 관련 PVC를 삭제합니다. 스토리지 클래스를 사용하는 모든 PVC를 삭제해야 합니다.

    $ oc delete -n openshift-monitoring pvc <pvc-name> --wait=true --timeout=5m

5.3. OpenShift Container Storage에서 OpenShift Container Platform 레지스트리 제거

이 섹션을 사용하여 OpenShift Container Storage에서 OpenShift Container Platform 레지스트리를 정리합니다. 대체 스토리지를 구성하려면 이미지 레지스트리를 참조하십시오.

OpenShift Container Platform 레지스트리 구성의 일부로 생성된 PVC는 openshift-image-registry 네임스페이스에 있습니다.

사전 요구 사항

  • OpenShift Container Storage PVC를 사용하도록 이미지 레지스트리가 구성되어 있어야 합니다.

절차

  1. configs.imageregistry.operator.openshift.io 오브젝트를 편집하고 storage 섹션에서 콘텐츠를 제거합니다.

    $ oc edit configs.imageregistry.operator.openshift.io

    편집 전

    .
    .
    .
    storage:
        pvc:
            claim: registry-cephfs-rwx-pvc
    .
    .
    .

    편집 후

    .
    .
    .
    storage:
    .
    .
    .

    이 예에서 PVC는 이제 삭제할 수 있는 registry-cephfs-rwx-pvc 라고 합니다.

  2. PVC를 삭제합니다.

    $ oc delete pvc <pvc-name> -n openshift-image-registry --wait=true --timeout=5m

5.4. OpenShift Container Storage에서 클러스터 로깅 Operator 제거

이 섹션을 사용하여 OpenShift Container Storage에서 클러스터 로깅 Operator를 정리합니다.

클러스터 로깅 Operator 구성의 일부로 생성된 PVC는 openshift-logging 네임스페이스에 있습니다.

사전 요구 사항

  • OpenShift Container Storage PVC를 사용하도록 클러스터 로깅 인스턴스가 구성되어 있어야 합니다.

절차

  1. 네임스페이스에서 ClusterLogging 인스턴스를 제거합니다.

    $ oc delete clusterlogging instance -n openshift-logging --wait=true --timeout=5m

    openshift-logging 네임스페이스의 PVC는 이제 삭제할 수 있습니다.

  2. PVC를 삭제합니다.

    $ oc delete pvc <pvc-name> -n openshift-logging --wait=true --timeout=5m