5.13. 고가용성 또는 단일 노드 클러스터 감지 및 지원
OpenShift Container Platform 클러스터는 여러 노드를 사용하는 HA(고가용성) 모드로 구성하거나 단일 노드를 사용하는 비-HA 모드로 구성할 수 있습니다. 단일 노드 OpenShift라고도 하는 단일 노드 클러스터에는 보다 보수적인 리소스 제약 조건이 있을 수 있습니다. 따라서 단일 노드 클러스터에 설치된 Operator가 적절하게 조정되고 제대로 실행되는 것이 중요합니다.
OpenShift Container Platform에 제공된 클러스터 고가용성 모드 API에 액세스하여 Operator 작성자는 Operator SDK를 사용하여 Operator가 HA 또는 비HA 모드 중 하나의 클러스터 인프라 토폴로지를 감지할 수 있습니다. 감지된 클러스터 토폴로지를 사용하여 Operator 및 관리하는 Operand 또는 워크로드 모두에 대해 리소스 요구 사항을 토폴로지에 가장 적합한 프로필로 자동 전환하는 사용자 정의 Operator 논리를 개발할 수 있습니다.
Operator 프로젝트의 관련 스캐폴딩 및 테스트 툴을 포함한 Red Hat 지원 버전의 Operator SDK CLI 툴은 더 이상 사용되지 않으며 향후 OpenShift Container Platform 릴리스에서 제거될 예정입니다. Red Hat은 현재 릴리스 라이프사이클 동안 이 기능에 대한 버그 수정 및 지원을 제공하지만 이 기능은 더 이상 개선 사항을 받지 않으며 향후 OpenShift Container Platform 릴리스에서 제거됩니다.
새 Operator 프로젝트를 생성하는 데 Red Hat 지원 버전의 Operator SDK는 권장되지 않습니다. 기존 Operator 프로젝트가 있는 Operator 작성자는 OpenShift Container Platform 4.17과 함께 릴리스된 Operator SDK CLI 툴 버전을 사용하여 프로젝트를 유지 관리하고 최신 버전의 OpenShift Container Platform을 대상으로 하는 Operator 릴리스를 생성할 수 있습니다.
Operator 프로젝트의 다음과 같은 관련 기본 이미지는 더 이상 사용되지 않습니다. 이러한 기본 이미지의 런타임 기능 및 구성 API는 버그 수정 및 CVE 문제를 해결하는 데 계속 지원됩니다.
- Ansible 기반 Operator 프로젝트의 기본 이미지
- Helm 기반 Operator 프로젝트의 기본 이미지
OpenShift Container Platform에서 더 이상 사용되지 않거나 삭제된 주요 기능의 최신 목록은 OpenShift Container Platform 릴리스 노트에서 더 이상 사용되지 않고 삭제된 기능 섹션을 참조하십시오.
지원되지 않는 커뮤니티 유지 관리 버전에 대한 자세한 내용은 Operator SDK(Operator Framework) 를 참조하십시오.
5.13.1. 클러스터 고가용성 모드 API 정보
OpenShift Container Platform은 Operator에서 인프라 토폴로지를 감지하는 데 사용할 수 있는 클러스터 고가용성 모드 API를 제공합니다. 인프라 API는 인프라와 관련된 클러스터 전체 정보를 보유합니다. OLM(Operator Lifecycle Manager)에서 관리하는 Operator는 고가용성 모드를 기반으로 Operand 또는 관리되는 워크로드를 다르게 구성해야 하는 경우 인프라 API를 사용할 수 있습니다.
인프라 API에서 infrastructureTopology
상태는 컨트롤 플레인 노드에서 실행되지 않는 인프라 서비스의 기대치를 표현하며, 일반적으로 master
이외의 role
값에 대한 노드 선택기로 표시됩니다. controlPlaneTopology
상태는 일반적으로 컨트롤 플레인 노드에서 실행되는 Operand에 대한 기대치를 나타냅니다.
두 상태의 기본 설정은 HighlyAvailable
로, Operator가 여러 노드 클러스터에 있는 동작을 나타냅니다. SingleReplica
설정은 단일 노드 OpenShift라고도 하는 단일 노드 클러스터에서 사용되며 Operator는 고가용성 작업을 위해 Operand를 구성하지 않아야 함을 나타냅니다.
OpenShift Container Platform 설치 프로그램은 다음 규칙에 따라 생성 시 클러스터의 복제본 수를 기반으로 controlPlaneTopology
및 infrastructureTopology
상태 필드를 설정합니다.
-
컨트롤 플레인 복제본 수가 3 미만이면
controlPlaneTopology
상태가SingleReplica
로 설정됩니다. 그렇지 않으면HighlyAvailable
로 설정됩니다. -
작업자 복제본 수가 0이면 컨트롤 플레인 노드도 작업자로 구성됩니다. 따라서
infrastructureTopology
상태는controlPlaneTopology
상태와 동일합니다. -
작업자 복제본 수가 1이면
infrastructureTopology
가SingleReplica
로 설정됩니다. 그렇지 않으면HighlyAvailable
로 설정됩니다.
5.13.2. Operator 프로젝트의 API 사용 예
Operator 작성자는 다음 예와 같이 일반적인 Kubernetes 구문 및 controller-runtime
라이브러리를 사용하여 Operator 프로젝트를 업데이트하여 Infrastructure API에 액세스할 수 있습니다.
controller-runtime
라이브러리 예
// Simple query nn := types.NamespacedName{ Name: "cluster", } infraConfig := &configv1.Infrastructure{} err = crClient.Get(context.Background(), nn, infraConfig) if err != nil { return err } fmt.Printf("using crclient: %v\n", infraConfig.Status.ControlPlaneTopology) fmt.Printf("using crclient: %v\n", infraConfig.Status.InfrastructureTopology)
Kubernetes 생성 예
operatorConfigInformer := configinformer.NewSharedInformerFactoryWithOptions(configClient, 2*time.Second) infrastructureLister = operatorConfigInformer.Config().V1().Infrastructures().Lister() infraConfig, err := configClient.ConfigV1().Infrastructures().Get(context.Background(), "cluster", metav1.GetOptions{}) if err != nil { return err } // fmt.Printf("%v\n", infraConfig) fmt.Printf("%v\n", infraConfig.Status.ControlPlaneTopology) fmt.Printf("%v\n", infraConfig.Status.InfrastructureTopology)