Cluster operations
출처: 문서
본문
클러스터 운영
오퍼레이터는 클러스터 수명 주기 동안 장애 복구, 롤링 업그레이드, 구성 변경, 볼륨 확장 등 일반적인 관리 작업을 자동화해요.
클러스터 복구
오퍼레이터는 일반적인 장애 시나리오를 자동으로 처리하고 충돌한 파드를 다시 시작해요. 일반적으로 오퍼레이터는 쿼럼과 클러스터 안정성을 유지하기 위해 파드를 하나씩 다시 시작해요.
오퍼레이터가 노드 풀에서 여러 개의 충돌하거나 누락된 파드를 동시에 감지하면, 모든 파드를 한 번에 시작하고 클러스터가 새로운 쿼럼을 형성할 수 있도록 하는 특별한 복구 모드로 전환해요. 이 병렬 복구 모드는 실험적이며, 기존 PVC 수를 사용하여 누락된 파드 수를 결정하기 때문에 PVC 기반 스토리지에서만 작동해요.
복구는 각 노드 풀의 기반이 되는 StatefulSet을 일시적으로 변경하고 podManagementPolicy를 Parallel로 설정하여 수행해요. 문제가 발생하면 오퍼레이터를 재배포하고 values.yaml에 manager.parallelRecoveryEnabled: false를 추가하여 병렬 복구를 비활성화할 수 있어요. 문제가 있으면 오퍼레이터 프로젝트에서 GitHub 이슈를 열어 보고해 주세요.
클러스터를 삭제했지만 PVC는 유지한 채로 클러스터를 다시 설치하는 경우에도 복구 모드가 활성화돼요.
모든 노드 풀이 emptyDir 스토리지를 사용하는 경우, 오퍼레이터는 다음 장애 시나리오에서 복구를 시작해요:
- 클러스터 관리자 노드의 절반 이상이 누락되거나 충돌하여 쿼럼이 깨진 경우.
- 모든 데이터 노드가 누락되거나 충돌하여 사용 가능한 데이터 노드가 없는 경우.
emptyDir 스토리지는 임시적이기 때문에 파드가 삭제되면 데이터가 손실되고 복구할 수 없어요. 이 시나리오에서는 오퍼레이터가 전체 OpenSearch 클러스터를 삭제하고 다시 생성해요.
롤링 업그레이드
오퍼레이터는 자동 롤링 버전 업그레이드를 지원해요. 업그레이드하려면 클러스터 spec의 general.version을 변경하고 다시 적용하세요:
spec:
general:
version: 3.0.0
{% include copy.html %}
그러면 오퍼레이터가 롤링 업그레이드를 수행하여 노드를 하나씩 다시 시작하고 각 노드 후에 클러스터가 안정화되고 녹색 상태에 도달할 때까지 기다려요. 노드 수와 저장된 데이터 크기에 따라 시간이 걸릴 수 있어요.
다운그레이드와 하나 이상의 메이저 버전을 넘는 업그레이드는 지원되지 않아요. OpenSearch 클러스터가 지원되지 않는 상태가 되기 때문이에요. 데이터 노드에 emptyDir 스토리지를 사용하는 경우 데이터 손실을 방지하려면 general.drainDataNodes를 true로 설정하세요.
구성 변경
이미 설치된 클러스터에서 OpenSearch 구성을 변경하면 오퍼레이터가 이를 감지하고 새 구성을 적용하기 위해 모든 클러스터 노드의 롤링 재시작을 수행해요. OpenSearch 구성 추가에 대한 자세한 내용은 Configuring opensearch.yml을 참조하세요. resources, annotations, labels와 같은 노드 풀별 구성에도 동일하게 적용돼요.
볼륨 확장
기본 스토리지가 온라인 볼륨 확장을 지원하는 경우 오퍼레이터가 해당 작업을 조정할 수 있어요.
디스크 볼륨 크기를 늘리려면 노드 풀의 diskSize를 원하는 값으로 설정하고 클러스터 spec YAML을 다시 적용하세요. 이 작업은 다운타임이 없으며 클러스터는 계속 작동해요.
디스크 크기를 늘릴 때 다음 사항을 고려하세요:
- 이는 PVC 기반 지속성에서만 작동해요.
- 클러스터 디스크를 확장하기 전에 볼륨과 데이터를 백업하여 장애 발생 시 백업에서 복원할 수 있도록 하세요.
- 새
diskSize를 적용하기 전에 클러스터 스토리지 클래스에allowVolumeExpansion: true가 설정되어 있는지 확인하세요. 자세한 내용은 Kubernetes storage classes를 참조하세요. - 스토리지 클래스 구성을 확인한 후 새
diskSize값으로 클러스터 YAML을 모든 노드 풀 또는 단일 노드 풀에 적용하세요. - 볼륨 확장과 동시에 클러스터에 다른 변경 사항을 적용하지 마세요.
- 크기 단위가 일관적인지 확인하세요. 예를 들어
diskSize가30G인 경우 확장 시G를 사용하세요(예:50G). 확장 중에G와Gi를 전환하지 마세요.
diskSize 단위를 G에서 Gi로 또는 그 반대로 변경하려면 먼저 데이터를 백업하고 기본 볼륨 크기가 동일하게 유지되도록 올바른 변환을 계산하세요. 그런 다음 클러스터 YAML을 다시 적용하세요. 이렇게 하면 StatefulSet이 VolumeClaimTemplates에 올바른 값으로 다시 생성돼요. 이 작업은 다운타임이 없어요.
{: .note}