외부 모드에서 OpenShift Container Storage 배포
환경 설치 및 설정 방법
초록
보다 포괄적 수용을 위한 오픈 소스 용어 교체
Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.
Red Hat 문서에 관한 피드백 제공
문서 개선을 위한 의견을 보내 주십시오. Red Hat이 이를 개선하는 방법을 알려 주십시오. 피드백을 제공하려면 다음을 수행하십시오.
특정 문구에 대한 간단한 주석은 다음과 같습니다.
- 문서가 Multi-page HTML 형식으로 표시되는지 확인합니다. 또한 문서 오른쪽 상단에 Feedback (피드백) 버튼이 있는지 확인합니다.
- 마우스 커서를 사용하여 주석 처리하려는 텍스트 부분을 강조 표시합니다.
- 강조 표시된 텍스트 아래에 표시되는 피드백 추가 팝업을 클릭합니다.
- 표시된 지침을 따릅니다.
보다 상세하게 피드백을 제출하려면 다음과 같이 Bugzilla 티켓을 생성하십시오.
- Bugzilla 웹 사이트로 이동하십시오.
- 구성 요소 섹션에서 문서 를 선택합니다.
- Description 필드에 문서 개선을 위한 제안 사항을 기입하십시오. 관련된 문서의 해당 부분 링크를 알려주십시오.
- Submit Bug를 클릭하십시오.
1장. 외부 모드에서 배포 개요
Red Hat OpenShift Container Storage는 외부 호스팅 RHCS(Red Hat Ceph Storage) 클러스터를 스토리지 공급자로 사용할 수 있습니다. 이 배포 유형은 VMware 및 사용자 프로비저닝 베어 메탈 환경에서 지원됩니다. 자세한 내용은 배포 계획을 참조하십시오.
RHCS 4 클러스터 설치 방법에 대한 지침은 설치 가이드를 참조하십시오.
다음 단계에 따라 OpenShift Container Storage를 외부 모드로 배포합니다.
작업자 노드에 Red Hat Enterprise Linux 호스트를 사용하는 경우 컨테이너에 파일 시스템 액세스를 활성화합니다.
RHCOS(Red Hat Enterprise Linux CoreOS) 호스트를 사용하는 경우 이 단계를 건너뜁니다.
- OpenShift Container Storage Operator를 설치합니다.
- OpenShift Container Storage 클러스터 서비스를 생성합니다.
2장. Red Hat Enterprise Linux 기반 노드의 컨테이너에 대한 파일 시스템 액세스 활성화
UPI(사용자 프로비저닝 인프라)의 Red Hat Enterprise Linux 기반에 작업자 노드가 있는 OpenShift Container Platform에 OpenShift Container Storage를 배포하면 기본 Ceph 파일 시스템에 대한 컨테이너 액세스 권한이 자동으로 제공되지 않습니다.
RHCOS(Red Hat Enterprise Linux CoreOS)를 기반으로 하는 호스트의 경우 이 섹션을 건너뜁니다.
절차
- Red Hat Enterprise Linux 기반 노드에 로그인하여 터미널을 엽니다.
클러스터의 각 노드에 대해 다음을 수행합니다.
노드가 rhel-7-server-extras-rpms 리포지토리에 액세스할 수 있는지 확인합니다.
# subscription-manager repos --list-enabled | grep rhel-7-server
출력에
rhel-7-server-rpms
및rhel-7-server-extras-rpms
가 표시되지 않거나 출력이 없는 경우 다음 명령을 실행하여 각 리포지토리를 활성화합니다.# subscription-manager repos --enable=rhel-7-server-rpms # subscription-manager repos --enable=rhel-7-server-extras-rpms
필수 패키지를 설치합니다.
# yum install -y policycoreutils container-selinux
SELinux에서 Ceph 파일 시스템의 컨테이너 사용을 영구적으로 활성화합니다.
# setsebool -P container_use_cephfs on
3장. 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 클러스터에 액세스할 수 있습니다.
- 추가 리소스 요구 사항은 배포 계획을 참조하십시오.
OpenShift Container Storage의 클러스터 수준 기본 노드 선택기를 재정의해야 하는 경우 다음 명령을 사용하여
openshift-storage
네임스페이스에 빈 노드 선택기를 지정할 수 있습니다.$ oc annotate namespace openshift-storage openshift.io/node-selector=
절차
- OpenShift 웹 콘솔에 로그인합니다.
- Operators → OperatorHub를 클릭합니다.
- Operator 목록에서 OpenShift Container Storage 를 검색하고 클릭합니다.
- 설치를 클릭합니다.
Operator 설치 페이지에서 다음 옵션을 설정합니다.
- 채널은 stable-4.8입니다.
- 클러스터의 특정 네임스페이스로서의 설치 모드입니다.
-
Operator 권장 네임스페이스 openshift-storage로 설치된 네임스페이스 입니다. 네임스페이스
openshift-storage
가 없으면 운영자 설치 중에 생성됩니다. - 자동 또는 수동 승인 전략
설치를 클릭합니다.
자동 업데이트를 선택하면 OLM(Operator Lifecycle Manager)이 개입 없이 Operator의 실행 중인 인스턴스를 자동으로 업그레이드합니다.
수동 업데이트를 선택하면 OLM에서 업데이트 요청을 생성합니다. 클러스터 관리자는 Operator를 새 버전으로 업데이트하려면 해당 업데이트 요청을 수동으로 승인해야 합니다.
검증 단계
- OpenShift Container Storage Operator에 설치에 성공한 녹색 눈금이 표시되는지 확인합니다.
4장. 외부 모드를 위한 OpenShift Container Storage 클러스터 서비스 생성
VMware vSphere 또는 사용자 프로비저닝 베어 메탈 인프라에 배포된 OpenShift Container Platform에 OpenShift Container Storage Operator를 설치한 후 새로운 OpenShift Container Storage 클러스터 서비스를 생성해야 합니다.
사전 요구 사항
- OpenShift Container Storage 4.8을 배포하기 전에 OpenShift Container Platform 버전이 4.8 이상인지 확인합니다.
- OpenShift Container Storage Operator가 설치되어 있어야 합니다. 자세한 내용은 Operator Hub를 사용하여 OpenShift Container Storage Operator 설치를 참조하십시오.
외부 클러스터에는 Red Hat Ceph Storage 버전 4.2z1 이상이 필요합니다. 자세한 내용은 Red Hat Ceph Storage 릴리스 및 해당 Ceph 패키지 버전에 대한 지식 기반 문서를 참조하십시오.
Red Hat Ceph Storage 클러스터를 4.1.1 미만의 버전에서 최신 릴리스로 업데이트했으며 새로 배포된 클러스터가 아닌 경우, 외부 모드에서 CephFS PVC를 생성할 수 있도록 Red Hat Ceph Storage 클러스터에서 CephFS 풀의 애플리케이션 유형을 수동으로 설정해야 합니다.
자세한 내용은 외부 모드에서 CephFS PVC 생성 문제 해결을 참조하십시오.
- Red Hat Ceph Storage에는 Ceph 대시보드가 설치되어 있어야 합니다. 자세한 내용은 Ceph 대시보드 설치 및 액세스를 참조하십시오.
- Red Hat은 외부 Red Hat Ceph Storage 클러스터에 PG Autoscaler를 활성화하는 것이 좋습니다. 자세한 내용은 Red Hat Ceph Storage 문서 의 배치 그룹 자동 확장기 섹션을 참조하십시오.
- 외부 Ceph 클러스터에는 사용할 기존 RBD 풀이 미리 구성되어 있어야 합니다. OpenShift Container Storage 배포를 진행하기 전에 Red Hat Ceph Storage 관리자에게 문의하십시오. Red Hat은 각 OpenShift Container Storage 클러스터마다 별도의 풀을 사용하는 것이 좋습니다.
절차
Operators → 설치된 Operator 를 클릭하여 설치된 모든 Operator를 확인합니다.
선택한 프로젝트가 openshift-storage 인지 확인합니다.
- 스토리지 클러스터의 OpenShift Container Storage → 인스턴스 생성 링크를 클릭합니다.
Mode(모드)를 External (외부)으로 선택합니다. 기본적으로 Internal는 배포 모드로 선택됩니다.
그림 4.1. 스토리지 클러스터 생성 양식의 외부 클러스터에 연결
- Connect to external cluster(외부 클러스터에 연결) 섹션에서 Download Script (스크립트 다운로드) 링크를 클릭하여 Ceph 클러스터 세부 정보를 추출하기 위한 python 스크립트를 다운로드합니다.
RHCS(Red Hat Ceph Storage) 클러스터 세부 정보를 추출하려면 RHCS 관리자에게 문의하여
admin 키가
있는 Red Hat Ceph Storage 노드에서 다운로드한 python 스크립트를 실행합니다.RHCS 노드에서 다음 명령을 실행하여 사용 가능한 인수 목록을 확인합니다.
# python3 ceph-external-cluster-details-exporter.py --help
중요Red Hat Ceph Storage 4.x 클러스터가 Red Hat Enterprise Linux 7.x(RHEL 7.x) 클러스터에 배포된 경우
python3
대신
python3을 사용합니다.참고MON 컨테이너(컨테이너화된 배포) 내부 또는 MON 노드(rpm 배포)에서 스크립트를 실행할 수도 있습니다.
RHCS 클러스터에서 외부 클러스터 세부 정보를 검색하려면 다음 명령을 실행합니다.
# python3 ceph-external-cluster-details-exporter.py \ --rbd-data-pool-name <rbd block pool name> [optional arguments]
예를 들면 다음과 같습니다.
# python3 ceph-external-cluster-details-exporter.py --rbd-data-pool-name ceph-rbd --monitoring-endpoint xxx.xxx.xxx.xxx --monitoring-endpoint-port xxxx --rgw-endpoint xxx.xxx.xxx.xxx:xxxx --run-as-user client.ocs
위 예에서
-
--rBD-data-pool-name
은 OpenShift Container Storage에서 블록 스토리지를 제공하는 데 사용되는 필수 매개 변수입니다. -
--RGW-endpoint
는 선택 사항입니다. Ceph Rados Gateway for OpenShift Container Storage를 통해 오브젝트 스토리지를 프로비저닝해야 하는 경우 이 매개변수를 제공합니다.<ip_address>:<port>
형식으로 끝점을 제공합니다. -
--monitoring-endpoint
는 선택 사항입니다. OpenShift Container Platform 클러스터에서 연결할 수 있는 활성ceph-mgr
의 IP 주소입니다. 제공하지 않으면 값이 자동으로 채워집니다. -
--monitoring-endpoint-port
는 선택 사항입니다. 이 포트는--monitoring-endpoint
에서 지정하는ceph-mgr
Prometheus 내보내기와 연결된 포트입니다. 제공하지 않으면 값이 자동으로 채워집니다. -- run-as-user
는 스크립트에서 생성된 Ceph 사용자의 이름을 제공하는 데 사용되는 선택적 매개 변수입니다. 이 매개변수를 지정하지 않으면 기본 사용자 이름client.healthchecker
가 생성됩니다. 새 사용자에 대한 권한은 다음과 같이 설정됩니다.- 대문자: [mgr] allow command config
- 대문자: [mon] allow r, allow command quorum_status, allow command version, allow command version
대문자: [osd] allow rwx pool=
RGW_POOL_PREFIX.rgw.meta
, r pool=.rgw.root
허용, rw pool=RGW_POOL_PREFIX.rgw.control
허용, rx pool=RGW_POOL_POOL_PREFIX.rgw.log
, 허용 allow x pool=RGW_POOL_PREFIX.rgw.buckets.index
python 스크립트를 사용하여 생성된 JSON 출력의 예:
[{"name": "rook-ceph-mon-endpoints", "kind": "ConfigMap", "data": {"data": "xxx.xxx.xxx.xxx:xxxx", "maxMonId": "0", "mapping": "{}"}}, {"name": "rook-ceph-mon", "kind": "Secret", "data": {"admin-secret": "admin-secret", "fsid": "<fs-id>", "mon-secret": "mon-secret"}}, {"name": "rook-ceph-operator-creds", "kind": "Secret", "data": {"userID": "client.healthchecker", "userKey": "<user-key>"}}, {"name": "rook-csi-rbd-node", "kind": "Secret", "data": {"userID": "csi-rbd-node", "userKey": "<user-key>"}}, {"name": "ceph-rbd", "kind": "StorageClass", "data": {"pool": "ceph-rbd"}}, {"name": "monitoring-endpoint", "kind": "CephCluster", "data": {"MonitoringEndpoint": "xxx.xxx.xxx.xxx", "MonitoringPort": "xxxx"}}, {"name": "rook-csi-rbd-provisioner", "kind": "Secret", "data": {"userID": "csi-rbd-provisioner", "userKey": "<user-key>"}}, {"name": "rook-csi-cephfs-provisioner", "kind": "Secret", "data": {"adminID": "csi-cephfs-provisioner", "adminKey": "<admin-key>"}}, {"name": "rook-csi-cephfs-node", "kind": "Secret", "data": {"adminID": "csi-cephfs-node", "adminKey": "<admin-key>"}}, {"name": "cephfs", "kind": "StorageClass", "data": {"fsName": "cephfs", "pool": "cephfs_data"}}, {"name": "ceph-rgw", "kind": "StorageClass", "data": {"endpoint": "xxx.xxx.xxx.xxx:xxxx", "poolPrefix": "default"}}]
-
.
json 확장자를 사용하여 JSON 출력을 파일에 저장합니다.
참고OpenShift Container Storage가 원활하게 작동하려면 스토리지 클러스터를 생성한 후에도 RHCS 외부 클러스터에서 JSON 파일을 사용하여 업로드할 매개 변수(RGW 끝점, CephFS 세부 정보, RBD 풀 등)가 여전히 변경되지 않았는지 확인합니다.
외부 클러스터 메타데이터 → 찾아보기 를 클릭하여 JSON 파일을 선택하고 업로드합니다.
JSON 파일의 콘텐츠가 채워져 텍스트 상자에 표시됩니다.
그림 4.2. JSON 파일 콘텐츠
생성을 클릭합니다.
Create(만들기) 버튼은
.json
파일을 업로드한 후에만 활성화됩니다.
검증 단계
설치된 스토리지 클러스터의 최종 상태가
단계로 표시되는지 확인합니다. 녹색 눈금 표시가 있는 ready
입니다.- Operators → 설치된 Operator → 스토리지 클러스터 링크를 클릭하여 스토리지 클러스터 설치 상태를 확인합니다.
- 또는 Operator Details(운영자 세부 정보 ) 탭에 있는 경우 Storage Cluster(스토리지 클러스터 ) 탭을 클릭하여 상태를 확인할 수 있습니다.
- OpenShift Container Storage, Pod 및 StorageClass가 성공적으로 설치되었는지 확인하려면 외부 모드 OpenShift Container Storage 설치 확인을 참조하십시오.
5장. 외부 모드의 OpenShift Container Storage 설치 확인
이 섹션을 사용하여 OpenShift Container Storage가 올바르게 배포되었는지 확인합니다.
5.1. Pod 상태 확인
- OpenShift 웹 콘솔의 왼쪽 창에서 워크로드 → 포드를 클릭합니다.
프로젝트 드롭다운 목록에서 openshift-storage 를 선택합니다.
각 구성 요소에 대해 예상되는 Pod 수 및 노드 수에 따라 어떻게 달라지는지에 대한 자세한 내용은 를 참조하십시오. 표 5.1. “OpenShift Container Storage 구성 요소에 해당하는 Pod”
다음 Pod가 running 상태인지 확인합니다.
표 5.1. OpenShift Container Storage 구성 요소에 해당하는 Pod
구성 요소 해당 Pod OpenShift Container Storage Operator
-
oCS-operator-*
(모든 작업자 노드에서 Pod 1개) -
ocs-metrics-exporter-*
Rook-ceph Operator
rook-ceph-operator-*
모든 작업자 노드에서 Pod 1개)
Multicloud Object Gateway
-
NooBaa-operator-*
(작업자 노드에서 Pod 1개) -
NooBaa-core-*
(작업자 노드에서 Pod 1개) -
noobaa-db-pg-*
(모든 작업자 노드에서 1 pod) -
NooBaa-endpoint-*
(작업자 노드에서 Pod 1개)
CSI
CephFS
-
CSI-cephfsplugin-*
(1개의 작업자 노드에서 Pod) -
CSI-cephfsplugin-provisioner-*
(작업자 노드에 배포된 Pod)
-
참고MDS가 외부 클러스터에 배포되지 않으면 csi-cephfsplugin 포드가 생성되지 않습니다.
rbd
-
CSI-rbdplugin-*
(각 작업자 노드에서 Pod 1개) -
CSI-rbdplugin-provisioner-*
(작업자 노드에 분산된 Pod)
-
-
5.2. OpenShift Container Storage 클러스터가 정상인지 확인
- OpenShift 웹 콘솔의 왼쪽 창에서 스토리지 → 개요 를 클릭하고 Block 및 File 탭을 클릭합니다.
- 상태 카드에서 스토리지 클러스터에 녹색 눈금 이 있는지 확인합니다.
세부 정보 카드에서 클러스터 정보가 다음과 같이 표시되는지 확인합니다.
- 서비스 이름
- OpenShift Container Storage
- 클러스터 이름
- ocs-external-storagecluster
- 공급자
- vSphere
- 모드
- 외부
- 버전
- ocs-operator-4.8.0
블록 및 파일 대시보드를 사용하는 OpenShift Container Storage 클러스터의 상태에 대한 자세한 내용은 OpenShift Container Storage 모니터링을 참조하십시오.
5.3. Multicloud Object Gateway가 정상인지 확인
- OpenShift 웹 콘솔의 왼쪽 창에서 스토리지 → 개요 를 클릭하고 오브젝트 탭을 클릭합니다.
상태 카드에서 오브젝트 서비스 및 데이터 복원성 이 모두 Ready
상태(녹색 틱)인지 확인합니다.
그림 5.1. 오브젝트 대시보드의 상태 카드
세부 정보 카드에서 MCG 정보가 다음과 같이 적절하게 표시되는지 확인합니다.
- 서비스 이름
- OpenShift Container Storage
- 시스템 이름
Multicloud Object Gateway
RADOS 개체 게이트웨이
- 공급자
- vSphere
- 버전
- ocs-operator-4.8.0
RADOS 오브젝트 게이트웨이는 외부 모드에서 OpenShift Container Storage를 배포하는 동안 RADOS Object Gateway 끝점 세부 정보가 포함된 경우에만 나열됩니다.
오브젝트 대시보드를 사용하는 OpenShift Container Storage 클러스터의 상태에 대한 자세한 내용은 OpenShift Container Storage 모니터링을 참조하십시오.
5.4. 스토리지 클래스가 생성되고 나열되었는지 확인
- OpenShift 웹 콘솔의 왼쪽 창에서 스토리지 → 스토리지 클래스를 클릭합니다.
OpenShift Container Storage 클러스터 생성을 사용하여 다음 스토리지 클래스가 생성되었는지 확인합니다.
-
ocs-external-storagecluster-ceph-rbd
-
ocs-external-storagecluster-ceph-rgw
-
ocs-external-storagecluster-cephfs
-
openshift-storage.noobaa.io
-
-
MDS가 외부 클러스터에 배포되지 않은 경우
ocs-external-storagecluster-cephfs
스토리지 클래스가 생성되지 않습니다. -
RGW가 외부 클러스터에 배포되지 않은 경우
ocs-external-storagecluster-ceph-rgw
스토리지 클래스가 생성되지 않습니다.
MDS 및 RGW에 대한 자세한 내용은 Red Hat Ceph Storage 문서를 참조하십시오.
5.5. Ceph 클러스터가 연결되어 있는지 확인
다음 명령을 실행하여 OpenShift Container Storage 클러스터가 외부 Red Hat Ceph Storage 클러스터에 연결되어 있는지 확인합니다.
$ oc get cephcluster -n openshift-storage
NAME DATADIRHOSTPATH MONCOUNT AGE PHASE MESSAGE HEALTH ocs-external-storagecluster-cephcluster 31m15s Connected Cluster connected successfully HEALTH_OK
5.6. 스토리지 클러스터가 준비되었는지 확인
다음 명령을 실행하여 스토리지 클러스터가 준비되었으며 External
옵션이 true로 설정되어 있는지 확인합니다.
$ oc get storagecluster -n openshift-storage
NAME AGE PHASE EXTERNAL CREATED AT VERSION ocs-external-storagecluster 31m15s Ready true 2021-02-29T20:43:04Z 4.8.0
6장. OpenShift Container Storage 설치 제거
6.1. 외부 모드에서 OpenShift Container Storage 설치 제거
이 섹션의 단계를 사용하여 OpenShift Container Storage를 제거합니다. OpenShift Container Storage를 설치 제거해도 외부 클러스터에서 RBD 풀이 제거되지 않거나 외부 Red Hat Ceph Storage 클러스터를 설치 제거하지 않습니다.
주석 제거
스토리지 클러스터의 주석은 제거 프로세스의 동작을 변경하는 데 사용됩니다. 설치 제거 동작을 정의하기 위해 스토리지 클러스터에 다음 두 개의 주석이 도입되었습니다.
-
uninstall.ocs.openshift.io/cleanup-policy: delete
-
uninstall.ocs.openshift.io/mode: 정상
uninstall.ocs.openshift.io/cleanup-policy
는 외부 모드에 적용되지 않습니다.
아래 표는 이러한 주석과 함께 사용할 수 있는 다양한 값에 대한 정보를 제공합니다.
표 6.1. uninstall.ocs.openshift.io 제거 주석 설명
주석 | 현재의 | Default | 동작 |
---|---|---|---|
cleanup-policy | delete | 있음 |
Rook은 물리적 드라이브와 |
cleanup-policy | 유지 | 없음 |
Rook은 물리적 드라이브 및 |
mode | 정상 | 있음 | Rook 및 NooBaa는 PVC와 OBC가 관리자/사용자가 제거할 때까지 제거 프로세스를 일시 중지합니다. |
mode | 강제 | 없음 | Rook 및 NooBaa는 Rook 및 NooBaa를 사용하여 프로비저닝된 PVC/OBC가 각각 존재하는 경우에도 제거를 진행합니다. |
다음 명령을 사용하여 주석의 값을 편집하여 설치 제거 모드를 변경할 수 있습니다.
$ oc annotate storagecluster ocs-external-storagecluster uninstall.ocs.openshift.io/mode="forced" --overwrite storagecluster.ocs.openshift.io/ocs-external-storagecluster annotated
사전 요구 사항
- OpenShift Container Storage 클러스터가 정상 상태인지 확인합니다. 리소스 또는 노드가 부족하여 일부 Pod가 성공적으로 종료되지 않으면 설치 제거 프로세스가 실패할 수 있습니다. 클러스터가 비정상인 경우 OpenShift Container Storage를 설치 제거하기 전에 Red Hat 고객 지원팀에 문의하십시오.
- 애플리케이션이 OpenShift Container Storage에서 제공하는 스토리지 클래스를 사용하여 PVC(영구 볼륨 클레임) 또는 개체 버킷 클레임(OBC)을 사용하지 않는지 확인합니다.
절차
OpenShift Container Storage를 사용하는 볼륨 스냅샷을 삭제합니다.
모든 네임 스페이스의 볼륨 스냅 샷 나열
$ oc get volumesnapshot --all-namespaces
이전 명령의 출력에서 OpenShift Container Storage를 사용하는 볼륨 스냅샷을 식별하고 삭제합니다.
$ oc delete volumesnapshot <VOLUME-SNAPSHOT-NAME> -n <NAMESPACE>
OpenShift Container Storage를 사용하는 PVC 및 OBC를 삭제합니다.
기본 설치 제거 모드(허용)에서 설치 제거 프로그램은 OpenShift Container Storage를 사용하는 모든 PVC 및 OBC가 삭제됩니다.
PVC를 사전에 삭제하지 않고 스토리지 클러스터를 삭제하려면 설치 제거 모드 주석을 "강력"으로 설정하고 이 단계를 건너뛸 수 있습니다. 이렇게 하면 시스템에서 고립된 PVC와 OBC가 생성됩니다.
OpenShift Container Storage를 사용하여 OpenShift Container Platform 모니터링 스택 PVC를 삭제합니다.
OpenShift Container Storage에서 모니터링 스택제거를 참조하십시오.
OpenShift Container Storage를 사용하여 OpenShift Container Platform 레지스트리 PVC를 삭제합니다.
OpenShift Container Storage에서 OpenShift Container Platform 레지스트리 제거
OpenShift Container Storage를 사용하여 OpenShift Container Platform 로깅 PVC를 삭제합니다.
OpenShift Container Storage를 사용하여 프로비저닝된 다른 PVC 및 OBC를 삭제합니다.
다음은 OpenShift Container Storage를 사용하여 프로비저닝된 PVC 및 OBC를 식별하는 샘플 스크립트입니다. 스크립트는 Openshift Container Storage에서 내부적으로 사용하는 PVC 및 OBC를 무시합니다.
#!/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
OBC를 삭제합니다.
$ oc delete obc <obc name> -n <project name>
PVC를 삭제합니다.
$ oc delete pvc <pvc name> -n <project-name>
클러스터에서 생성된 사용자 정의 백업 저장소, 버킷 클래스 등을 제거했는지 확인합니다.
Storage Cluster 오브젝트를 삭제하고 관련 리소스가 제거될 때까지 기다립니다.
$ oc delete -n openshift-storage storagecluster --all --wait=true
네임스페이스를 삭제하고 삭제가 완료될 때까지 기다립니다.
openshift-storage
가 활성 프로젝트인 경우 다른 프로젝트로 전환해야 합니다.예를 들면 다음과 같습니다.
$ oc project default $ oc delete project openshift-storage --wait=true --timeout=5m
다음 명령에서 a
NotFound
오류를 반환하면 프로젝트가 삭제됩니다.$ oc get project openshift-storage
참고OpenShift Container Storage를 설치 제거하는 동안 네임스페이스가 완전히 삭제되지 않고
종료
상태가 유지되는 경우 설치 제거 중 나머지 리소스 문제 해결 및 삭제 단계를 수행하여 네임스페이스가 종료되지 않는 오브젝트를 식별합니다.OpenShift Container Storage를 사용하여 프로비저닝된 모든 PV가 삭제되었는지 확인합니다.
Released
상태에 PV가 남아 있으면 삭제합니다.$ oc get pv $ oc delete pv <pv name>
Multicloud Object Gateway 스토리지 클래스를 삭제합니다.
$ oc delete storageclass openshift-storage.noobaa.io --wait=true --timeout=5m
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
OpenShift Container Storage가 완전히 설치 제거되었는지 확인하려면 OpenShift Container Platform Web Console에서 다음을 수행합니다.
- Storage(스토리지)를 클릭합니다.
- Storage(스토리지)에 Overview (개요)가 더 이상 표시되지 않는지 확인합니다.
6.2. OpenShift Container Storage에서 모니터링 스택 제거
이 섹션을 사용하여 OpenShift Container Storage에서 모니터링 스택을 정리합니다.
모니터링 스택 구성의 일부로 생성된 PVC는 openshift-monitoring
네임스페이스에 있습니다.
사전 요구 사항
PVC는 OpenShift Container Platform 모니터링 스택을 사용하도록 구성됩니다.
자세한 내용은 모니터링 스택 구성을 참조하십시오.
절차
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-external-storagecluster-ceph-rbd 8d persistentvolumeclaim/my-alertmanager-claim-alertmanager-main-1 Bound pvc-0d5a9825-15a5-11ea-baa0-026d231574aa 40Gi RWO ocs-external-storagecluster-ceph-rbd 8d persistentvolumeclaim/my-alertmanager-claim-alertmanager-main-2 Bound pvc-0d6413dc-15a5-11ea-baa0-026d231574aa 40Gi RWO ocs-external-storagecluster-ceph-rbd 8d persistentvolumeclaim/my-prometheus-claim-prometheus-k8s-0 Bound pvc-0b7c19b0-15a5-11ea-baa0-026d231574aa 40Gi RWO ocs-external-storagecluster-ceph-rbd 8d persistentvolumeclaim/my-prometheus-claim-prometheus-k8s-1 Bound pvc-0b8aed3f-15a5-11ea-baa0-026d231574aa 40Gi RWO ocs-external-storagecluster-ceph-rbd 8d
모니터링 구성 맵을
편집합니다
.$ oc -n openshift-monitoring edit configmap cluster-monitoring-config
다음 예제와 같이 OpenShift Container Storage 스토리지 클래스를 참조하는
config
섹션을 제거하여 저장합니다.편집하기 전에
. . . apiVersion: v1 data: config.yaml: | alertmanagerMain: volumeClaimTemplate: metadata: name: my-alertmanager-claim spec: resources: requests: storage: 40Gi storageClassName: ocs-external-storagecluster-ceph-rbd prometheusK8s: volumeClaimTemplate: metadata: name: my-prometheus-claim spec: resources: requests: storage: 40Gi storageClassName: ocs-external-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 . . .
이 예에서는
alertmanagerMain
및prometheusK8s
모니터링 구성 요소가 OpenShift Container Storage PVC를 사용하고 있습니다.PVC를 사용하여 포드를 나열합니다.
이 예에서 PVC를 사용하던
alertmanagerMain
및prometheusK8s
Pod는Terminating
상태에 있습니다. 이러한 Pod가 더 이상 OpenShift Container Storage PVC를 사용하지 않으면 PVC를 삭제할 수 있습니다.$ oc get pod,pvc -n openshift-monitoring NAME READY STATUS RESTARTS AGE pod/alertmanager-main-0 3/3 Terminating 0 10h pod/alertmanager-main-1 3/3 Terminating 0 10h pod/alertmanager-main-2 3/3 Terminating 0 10h pod/cluster-monitoring-operator-84cd9df668-zhjfn 1/1 Running 0 18h pod/grafana-5db6fd97f8-pmtbf 2/2 Running 0 10h pod/kube-state-metrics-895899678-z2r9q 3/3 Running 0 10h pod/node-exporter-4njxv 2/2 Running 0 18h pod/node-exporter-b8ckz 2/2 Running 0 11h pod/node-exporter-c2vp5 2/2 Running 0 18h pod/node-exporter-cq65n 2/2 Running 0 18h pod/node-exporter-f5sm7 2/2 Running 0 11h pod/node-exporter-f852c 2/2 Running 0 18h pod/node-exporter-l9zn7 2/2 Running 0 11h pod/node-exporter-ngbs8 2/2 Running 0 18h pod/node-exporter-rv4v9 2/2 Running 0 18h pod/openshift-state-metrics-77d5f699d8-69q5x 3/3 Running 0 10h pod/prometheus-adapter-765465b56-4tbxx 1/1 Running 0 10h pod/prometheus-adapter-765465b56-s2qg2 1/1 Running 0 10h pod/prometheus-k8s-0 6/6 Terminating 1 9m47s pod/prometheus-k8s-1 6/6 Terminating 1 9m47s pod/prometheus-operator-cbfd89f9-ldnwc 1/1 Running 0 43m pod/telemeter-client-7b5ddb4489-2xfpz 3/3 Running 0 10h NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE persistentvolumeclaim/ocs-alertmanager-claim-alertmanager-main-0 Bound pvc-2eb79797-1fed-11ea-93e1-0a88476a6a64 40Gi RWO ocs-external-storagecluster-ceph-rbd 19h persistentvolumeclaim/ocs-alertmanager-claim-alertmanager-main-1 Bound pvc-2ebeee54-1fed-11ea-93e1-0a88476a6a64 40Gi RWO ocs-external-storagecluster-ceph-rbd 19h persistentvolumeclaim/ocs-alertmanager-claim-alertmanager-main-2 Bound pvc-2ec6a9cf-1fed-11ea-93e1-0a88476a6a64 40Gi RWO ocs-external-storagecluster-ceph-rbd 19h persistentvolumeclaim/ocs-prometheus-claim-prometheus-k8s-0 Bound pvc-3162a80c-1fed-11ea-93e1-0a88476a6a64 40Gi RWO ocs-external-storagecluster-ceph-rbd 19h persistentvolumeclaim/ocs-prometheus-claim-prometheus-k8s-1 Bound pvc-316e99e2-1fed-11ea-93e1-0a88476a6a64 40Gi RWO ocs-external-storagecluster-ceph-rbd 19h
관련 PVC를 삭제합니다. 스토리지 클래스를 사용하는 모든 PVC를 삭제하십시오.
$ oc delete -n openshift-monitoring pvc <pvc-name> --wait=true --timeout=5m
6.3. OpenShift Container Storage에서 OpenShift Container Platform 레지스트리 제거
이 섹션을 사용하여 OpenShift Container Storage에서 OpenShift Container Platform 레지스트리를 정리합니다. 대체 스토리지를 구성하려면 이미지 레지스트리를 참조하십시오.
OpenShift Container Platform 레지스트리 구성의 일부로 생성된 PVC는 openshift-image-registry
네임스페이스에 있습니다.
사전 요구 사항
- OpenShift Container Storage PVC를 사용하도록 이미지 레지스트리가 구성되어 있어야 합니다.
절차
configs.imageregistry.operator.openshift.io
오브젝트를 편집하고 스토리지 섹션에서 콘텐츠를 제거합니다.$ oc edit configs.imageregistry.operator.openshift.io
편집하기 전에
. . . storage: pvc: claim: registry-cephfs-rwx-pvc . . .
편집 후
. . . storage: emptyDir: {} . . .
이 예에서는 PVC를
registry-cephfs-rwx-pvc
라고 하며 이제 안전하게 삭제할 수 있습니다.PVC를 삭제합니다.
$ oc delete pvc <pvc-name> -n openshift-image-registry --wait=true --timeout=5m
6.4. OpenShift Container Storage에서 클러스터 로깅 Operator 제거
OpenShift Container Storage에서 클러스터 로깅 Operator를 정리하려면 절차의 단계를 따르십시오.
클러스터 로깅 Operator 구성의 일부로 생성된 PVC는 openshift-logging
네임스페이스에 있습니다.
사전 요구 사항
- OpenShift Container Storage PVC를 사용하려면 클러스터 로깅 인스턴스를 구성해야 합니다.
절차
네임스페이스에서
ClusterLogging
인스턴스를 제거합니다.$ oc delete clusterlogging instance -n openshift-logging --wait=true --timeout=5m
이제
openshift-logging
네임스페이스의 PVC를 삭제할 수 있습니다.PVC를 삭제합니다.
$ oc delete pvc <pvc-name> -n openshift-logging --wait=true --timeout=5m