두 개의 노드 OpenShift 클러스터 설치


OpenShift Container Platform 4.20

단일 노드에 OpenShift Container Platform 설치

Red Hat OpenShift Documentation Team

초록

이 문서에서는 단일 노드에 OpenShift Container Platform을 설치하는 방법을 설명합니다.

1장. Arbiter를 사용하는 2-Node

두 개의 컨트롤 플레인 노드와 하나의 로컬 arbiter 노드가 있는 OpenShift Container Platform 클러스터는 컴팩트하고 비용 효율적인 OpenShift Container Platform 토폴로지입니다. arbiter 노드는 전체 etcd 데이터를 저장하여 etcd 쿼럼을 유지 관리하고 분할 뇌를 방지합니다. arbiter 노드는 추가 컨트롤 플레인 구성 요소 kube-apiserverkube-controller-manager 를 실행하지 않으며 워크로드를 실행하지 않습니다.

두 개의 컨트롤 플레인 노드와 하나의 로컬 arbiter 노드가 있는 클러스터를 설치하려면 arbiter 역할을 노드 중 하나에 할당하고 클러스터의 컨트롤 플레인 노드 수를 2로 설정합니다. OpenShift Container Platform은 현재 중재자 노드 수에 제한을 적용하지 않지만 일반적인 배포에는 하드웨어 리소스 사용을 최소화하기 위한 하나만 포함됩니다.

설치 후 두 개의 컨트롤 플레인 노드와 로컬 arbiter 노드가 있지만 표준 멀티 노드 클러스터에는 추가 arbiter 노드를 추가할 수 있습니다. 또한 로컬 노드 arbiter 및 표준 토폴로지를 사용하여 2-노드 OpenShift 클러스터를 변환할 수 없습니다.

다음 방법 중 하나를 사용하여 두 개의 컨트롤 플레인 노드와 하나의 로컬 arbiter 노드가 있는 클러스터를 설치할 수 있습니다.

2장. 펜싱을 사용하는 2-노드

2.1. 펜싱을 사용하여 2-노드 OpenShift 클러스터 설치 준비

중요

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

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

펜싱을 사용하는 2-노드 OpenShift 클러스터는 고가용성(HA)으로 하드웨어 풋프린트를 줄일 수 있습니다. 이 구성은 전체 3-노드 컨트롤 플레인 클러스터를 배포하는 것이 실용적이지 않은 분산 또는 에지 환경에 맞게 설계되었습니다.

2-노드 클러스터에는 컴퓨팅 노드가 포함되지 않습니다. 두 개의 컨트롤 플레인 시스템은 클러스터 관리 외에도 사용자 워크로드를 실행합니다.

펜싱은 Pacemaker에서 관리하며 노드의 BMC(Baseboard Management Console)를 사용하여 응답하지 않는 노드를 격리할 수 있습니다. 응답하지 않는 노드가 펜싱된 후 나머지 노드는 리소스 손상 위험 없이 클러스터를 안전하게 계속 작동할 수 있습니다.

참고

사용자 프로비저닝 인프라 방법 또는 설치 관리자 프로비저닝 인프라 방법을 사용하여 펜싱을 사용하여 2-노드 OpenShift 클러스터를 배포할 수 있습니다.

펜싱을 사용하는 2-노드 OpenShift 클러스터에는 다음 호스트가 필요합니다.

Expand
표 2.1. 최소 필수 호스트
호스트설명

컨트롤 플레인 시스템 두 개

컨트롤 플레인 시스템은 컨트롤 플레인을 구성하는 Kubernetes 및 OpenShift Container Platform 서비스를 실행합니다.

임시 부트스트랩 시스템 한 개

컨트롤 플레인 시스템에 OpenShift Container Platform 클러스터를 배포하려면 부트스트랩 머신이 필요합니다. 클러스터를 설치한 후 부트스트랩 시스템을 제거할 수 있습니다.

부트스트랩, 컨트롤 플레인 시스템은 운영 체제로 RHCOS (Red Hat Enterprise Linux CoreOS)를 사용해야 합니다. RHCOS 설치 및 부트스트랩 프로세스 시작에 대한 자세한 내용은 RHCOS 설치 및 OpenShift Container Platform 부트스트랩 프로세스 시작을참조하십시오.

참고

RHCOS를 사용해야 하는 요구 사항은 사용자 프로비저닝 인프라 배포에만 적용됩니다. 설치 프로그램이 프로비저닝한 인프라 배포의 경우 부트스트랩 및 컨트롤 플레인 시스템은 설치 프로그램에 의해 자동으로 프로비저닝되며 RHCOS를 수동으로 설치할 필요가 없습니다.

각 클러스터 시스템이 다음과 같은 최소 요구사항을 충족해야 합니다.

Expand
표 2.2. 최소 리소스 요구사항
머신운영 체제CPU [1]RAM스토리지초당 입력/출력(IOPS) [1]

부트스트랩

RHCOS

4

16GB

120GB

300

컨트롤 플레인

RHCOS

4

16GB

120GB

300

  1. SMT(동시 멀티스레딩) 또는 Hyper-Threading이 활성화되지 않은 경우 하나의 CPU가 하나의 물리적 코어와 동일합니다. 활성화하면 다음 공식을 사용하여 해당 비율을 계산합니다. (코어당 스레드 수 × 코어 수) × 소켓 = CPU입니다.
  2. OpenShift Container Platform 및 Kubernetes는 디스크 성능에 민감하며 특히 컨트롤 플레인 노드의 etcd에 더 빠른 스토리지를 사용하는 것이 좋습니다. 많은 클라우드 플랫폼에서 스토리지 크기와 IOPS를 함께 확장되므로 충분한 성능을 얻으려면 스토리지 볼륨을 과도하게 할당해야 할 수 있습니다.

2.1.2. 사용자 프로비저닝 DNS 요구사항

OpenShift Container Platform 배포의 경우 다음 구성 요소에 DNS 이름을 확인해야 합니다.

  • Kubernetes API
  • OpenShift Container Platform 애플리케이션 와일드카드
  • 부트스트랩 및 컨트롤 플레인 시스템

Kubernetes API, 부트스트랩 시스템 및 컨트롤 플레인 시스템에 대한 역방향 DNS 확인이 필요합니다.

DNS A/AAAA 또는 CNAME 레코드는 이름 확인에 사용되며 PTR 레코드는 역방향 이름 확인에 사용됩니다. RHCOS(Red Hat Enterprise Linux CoreOS)는 DHCP에서 호스트 이름을 제공하지 않는 한 모든 노드의 호스트 이름을 설정하는 데 역방향 레코드를 사용하므로 역방향 레코드가 중요합니다. 또한 역방향 레코드는 OpenShift Container Platform이 작동하는 데 필요한 인증서 서명 요청 (CSR)을 생성하는 데 사용됩니다.

참고

DHCP 서버를 사용하여 각 클러스터 노드에 호스트 이름을 제공하는 것이 좋습니다. 자세한 내용은 사용자 프로비저닝 인프라 섹션에 대한 DHCP 권장 사항 섹션을 참조하십시오.

사용자가 프로비저닝한 OpenShift Container Platform 클러스터에 대해 다음 DNS 레코드가 필요하며 설치 전에 있어야 합니다. 각 레코드에서 <cluster_name>은 클러스터 이름이고 <base_domain>install-config.yaml 파일에서 지정하는 기반 도메인입니다. 전체 DNS 레코드는 <component>.<cluster_name>.<base_domain> 형식입니다.

Expand
표 2.3. 필수 DNS 레코드
구성 요소레코드설명

Kubernetes API

api.<cluster_name>.<base_domain>.

API 로드 밸런서를 식별하는 DNS A/AAAA 또는 CNAME 레코드와 DNS PTR 레코드입니다. 이 레코드는 클러스터 외부의 클라이언트와 클러스터 내의 모든 노드에서 확인할 수 있어야 합니다.

api-int.<cluster_name>.<base_domain>.

내부적으로 API 로드 밸런서를 식별하는 DNS A/AAAA 또는 CNAME 레코드와 DNS PTR 레코드입니다. 이 레코드는 클러스터 내의 모든 노드에서 확인할 수 있어야 합니다.

중요

API 서버는 Kubernetes에 기록된 호스트 이름으로 작업자 노드를 확인할 수 있어야 합니다. API 서버가 노드 이름을 확인할 수 없는 경우 프록시된 API 호출이 실패할 수 있으며 pod에서 로그를 검색할 수 없습니다.

라우트

*.apps.<cluster_name>.<base_domain>.

애플리케이션 인그레스 로드 밸런서를 참조하는 와일드카드 DNS A/AAA 또는 CNAME 레코드입니다. 애플리케이션 인그레스 로드 밸런서는 Ingress 컨트롤러 Pod를 실행하는 머신을 대상으로 합니다. 기본적으로 Ingress 컨트롤러 Pod는 컴퓨팅 노드에서 실행됩니다. 2-노드 또는 3-노드 클러스터와 같은 전용 컴퓨팅 노드가 없는 클러스터 토폴로지에서 컨트롤 플레인 노드도 작업자 레이블을 전송하므로 Ingress Pod는 컨트롤 플레인 노드에 예약됩니다. 이 레코드는 클러스터 외부의 클라이언트와 클러스터 내의 모든 노드에서 확인할 수 있어야 합니다.

예를 들어 console-openshift-console.apps.<cluster_name>.<base_domain>은 OpenShift Container Platform 콘솔의 와일드카드 경로로 사용됩니다.

부트스트랩 시스템

bootstrap.<cluster_name>.<base_domain>.

부트스트랩 머신을 식별하는 DNS A/AAAA 또는 CNAME 레코드와 DNS PTR 레코드입니다. 이 레코드는 클러스터 내의 노드에서 확인할 수 있어야 합니다.

컨트롤 플레인 머신

<control_plane><n>.<cluster_name>.<base_domain>.

컨트롤 플레인 노드의 각 머신을 식별하는 DNS A/AAAA 또는 CNAME 레코드와 DNS PTR 레코드입니다. 이 레코드는 클러스터 내의 노드에서 확인할 수 있어야 합니다.

참고

OpenShift Container Platform 4.4 이상에서는 DNS 구성에서 etcd 호스트 및 SRV 레코드를 지정할 필요가 없습니다.

작은 정보

dig 명령을 사용하여 이름과 역방향 이름을 확인할 수 있습니다. 자세한 검증 단계는 사용자 프로비저닝 인프라의 DNS 확인 섹션을 참조하십시오.

2.1.2.1. 사용자 프로비저닝 클러스터의 DNS 구성 예

이 섹션에서는 사용자 프로비저닝 인프라에 OpenShift Container Platform을 배포하기 위한 DNS 요구 사항을 충족하는 A 및 PTR 레코드 구성 샘플을 제공합니다. 샘플은 하나의 DNS 솔루션을 선택하기 위한 조언을 제공하기 위한 것이 아닙니다.

이 예제에서 클러스터 이름은 ocp4이고 기본 도메인은 example.com입니다.

참고

펜싱이 있는 2-노드 클러스터에서 컨트롤 플레인 시스템도 예약 가능한 작업자 노드입니다. 따라서 DNS 구성에는 두 개의 컨트롤 플레인 노드만 포함되어야 합니다. 나중에 컴퓨팅 머신을 추가하는 경우 표준 사용자 프로비저닝 설치에서와 같이 해당 A 및 PTR 레코드를 제공합니다.

사용자 프로비저닝 클러스터의 DNS A 레코드 구성 예

다음 BIND 영역 파일의 예제에서는 사용자가 프로비저닝한 클러스터의 이름 확인을 위한 샘플 A 레코드를 보여줍니다.

예 2.1. 샘플 DNS 영역 데이터베이스

$TTL 1W
@	IN	SOA	ns1.example.com.	root (
			2019070700	; serial
			3H		; refresh (3 hours)
			30M		; retry (30 minutes)
			2W		; expiry (2 weeks)
			1W )		; minimum (1 week)
	IN	NS	ns1.example.com.
	IN	MX 10	smtp.example.com.
;
;
ns1.example.com.		IN	A	192.168.1.5
smtp.example.com.		IN	A	192.168.1.5
;
helper.example.com.		IN	A	192.168.1.5
helper.ocp4.example.com.	IN	A	192.168.1.5
;
api.ocp4.example.com.		IN	A	192.168.1.5
api-int.ocp4.example.com.	IN	A	192.168.1.5
;
*.apps.ocp4.example.com.	IN	A	192.168.1.5
;
bootstrap.ocp4.example.com.	IN	A	192.168.1.96
;
control-plane0.ocp4.example.com.	IN	A	192.168.1.97
control-plane1.ocp4.example.com.	IN	A	192.168.1.98
;
;
;EOF
Copy to Clipboard Toggle word wrap
  • api.ocp4.example.com: Kubernetes API에 대한 이름 확인을 제공합니다. 레코드는 API 로드 밸런서의 IP 주소를 나타냅니다.
  • api-int.ocp4.example.com: Kubernetes API의 이름 확인을 제공합니다. 레코드는 API 로드 밸런서의 IP 주소를 참조하며 내부 클러스터 통신에 사용됩니다.
  • *.apps.ocp4.example.com.: 와일드카드 경로에 대한 이름 확인을 제공합니다. 레코드는 애플리케이션 인그레스 로드 밸런서의 IP 주소를 나타냅니다. 애플리케이션 인그레스 로드 밸런서는 Ingress 컨트롤러 Pod를 실행하는 머신을 대상으로 합니다.

    참고

    이 예제에서는 Kubernetes API 및 애플리케이션 인그레스 트래픽에 동일한 로드 밸런서를 사용합니다. 프로덕션 시나리오에서는 각각에 대해 개별적으로 로드 밸런서 인프라를 확장할 수 있도록 API 및 애플리케이션 인그레스 로드 밸런서를 별도로 배포할 수 있습니다.

  • bootstrap.ocp4.example.com.: 부트스트랩 시스템에 대한 이름 확인을 제공합니다.
  • control-plane0.ocp4.example.com.: 컨트롤 플레인 시스템에 대한 이름 확인을 제공합니다.

사용자 프로비저닝 클러스터의 DNS PTR 레코드 구성 예

다음 예제 BIND 영역 파일은 사용자 프로비저닝 클러스터의 역방향 이름 확인을 위한 샘플 PTR 레코드를 보여줍니다.

예 2.2. 역방향 레코드의 샘플 DNS 영역 데이터베이스

$TTL 1W
@	IN	SOA	ns1.example.com.	root (
			2019070700	; serial
			3H		; refresh (3 hours)
			30M		; retry (30 minutes)
			2W		; expiry (2 weeks)
			1W )		; minimum (1 week)
	IN	NS	ns1.example.com.
;
5.1.168.192.in-addr.arpa.	IN	PTR	api.ocp4.example.com.
5.1.168.192.in-addr.arpa.	IN	PTR	api-int.ocp4.example.com.
;
96.1.168.192.in-addr.arpa.	IN	PTR	bootstrap.ocp4.example.com.
;
97.1.168.192.in-addr.arpa.	IN	PTR	control-plane0.ocp4.example.com.
98.1.168.192.in-addr.arpa.	IN	PTR	control-plane1.ocp4.example.com.
;
;
;EOF
Copy to Clipboard Toggle word wrap
  • api.ocp4.example.com: Kubernetes API에 대한 역방향 DNS 확인을 제공합니다. PTR 레코드는 API 로드 밸런서의 레코드 이름을 참조합니다.
  • api-int.ocp4.example.com: Kubernetes API에 대한 역방향 DNS 확인을 제공합니다. PTR 레코드는 API 로드 밸런서의 레코드 이름을 참조하며 내부 클러스터 통신에 사용됩니다.
  • bootstrap.ocp4.example.com: 부트스트랩 시스템에 대한 역방향 DNS 확인을 제공합니다.
  • control-plane0.ocp4.example.com.: 컨트롤 플레인 시스템에 rebootstrap.ocp4.example.com.verse DNS 확인을 제공합니다.
참고

OpenShift Container Platform 애플리케이션 와일드카드에는 PTR 레코드가 필요하지 않습니다.

2.1.3. 설치 관리자 프로비저닝 DNS 요구 사항

클라이언트는 baremetal 네트워크를 통해 OpenShift Container Platform 클러스터 노드에 액세스합니다. 네트워크 관리자는 정식 이름 확장이 클러스터 이름인 하위 도메인 또는 하위 영역을 구성해야 합니다.

<cluster_name>.<base_domain>
Copy to Clipboard Toggle word wrap

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

test-cluster.example.com
Copy to Clipboard Toggle word wrap

OpenShift Container Platform에는 클러스터 멤버십 정보를 사용하여 A/AAAA 레코드를 생성하는 기능이 포함되어 있습니다. 이렇게 하면 노드 이름이 해당 IP 주소로 확인됩니다. 노드가 API에 등록되면 클러스터에서 CoreDNS-mDNS를 사용하지 않고 노드 정보를 분산할 수 있습니다. 그러면 멀티캐스트 DNS와 연결된 네트워크 트래픽이 제거됩니다.

CoreDNS가 올바르게 작동하려면 업스트림 DNS 서버에 TCP 및 UDP 연결이 모두 필요합니다. 업스트림 DNS 서버가 OpenShift Container Platform 클러스터 노드에서 TCP 및 UDP 연결을 모두 수신할 수 있는지 확인합니다.

OpenShift Container Platform 배포의 경우 다음 구성 요소에 DNS 이름을 확인해야 합니다.

  • Kubernetes API
  • OpenShift Container Platform 애플리케이션 와일드카드 수신 API

A/AAAA 레코드는 이름 확인에 사용되며 PTR 레코드는 역방향 이름 확인에 사용됩니다. RHCOS(Red Hat Enterprise Linux CoreOS)는 역방향 레코드 또는 DHCP를 사용하여 모든 노드의 호스트 이름을 설정합니다.

설치 프로그램에서 제공하는 설치에는 클러스터 멤버십 정보를 사용하여 A/AAAA 레코드를 생성하는 기능이 포함됩니다. 이렇게 하면 노드 이름이 해당 IP 주소로 확인됩니다. 각 레코드에서 <cluster_name>은 클러스터 이름이고 <base_domain>install-config.yaml 파일에서 지정하는 기반 도메인입니다. 전체 DNS 레코드는 <component>.<cluster_name>.<base_domain> 형식입니다.

Expand
표 2.4. 필수 DNS 레코드
구성 요소레코드설명

Kubernetes API

api.<cluster_name>.<base_domain>.

A/AAAA 레코드와 PTR 레코드는 API 로드 밸런서를 식별합니다. 이 레코드는 클러스터 외부의 클라이언트와 클러스터 내의 모든 노드에서 확인할 수 있어야 합니다.

라우트

*.apps.<cluster_name>.<base_domain>.

와일드카드 A/AAAA 레코드는 애플리케이션 인그레스 로드 밸런서를 나타냅니다. 애플리케이션 인그레스 로드 밸런서는 Ingress 컨트롤러 Pod를 실행하는 노드를 대상으로 합니다. Ingress 컨트롤러 Pod는 기본적으로 작업자 노드에서 실행됩니다. 이 레코드는 클러스터 외부의 클라이언트와 클러스터 내의 모든 노드에서 확인할 수 있어야 합니다.

예를 들어 console-openshift-console.apps.<cluster_name>.<base_domain>은 OpenShift Container Platform 콘솔의 와일드카드 경로로 사용됩니다.

작은 정보

dig 명령을 사용하여 DNS 확인을 확인할 수 있습니다.

2.1.4. 펜싱을 사용하여 2-노드 클러스터의 인그레스 로드 밸런서 구성

펜싱을 사용하여 2노드 OpenShift 클러스터를 설치하기 전에 외부 Ingress 로드 밸런서(LB)를 구성해야 합니다. Ingress LB는 외부 애플리케이션 트래픽을 컨트롤 플레인 노드에서 실행되는 Ingress 컨트롤러 Pod로 전달합니다. 두 노드 모두 적극적으로 트래픽을 수신할 수 있습니다.

사전 요구 사항

  • 펜싱이 활성화된 두 개의 컨트롤 플레인 노드가 있습니다.
  • 로드 밸런서에서 두 컨트롤 플레인 노드로의 네트워크 연결이 있습니다.
  • api.<cluster_name>.<base_domain> 및 *. apps.<cluster_name>.<base_domain > 에 대한 DNS 레코드를 생성했습니다.
  • 끝점에서 상태 점검을 지원하는 외부 로드 밸런서가 있습니다.

프로세스

  1. 다음 포트에 대한 트래픽을 전달하도록 로드 밸런서를 구성합니다.

    • 6443: Kubernetes API 서버
    • 80443: 애플리케이션 인그레스

      두 컨트롤 플레인 노드로 트래픽을 전달해야 합니다.

  2. 로드 밸런서에서 상태 점검을 구성합니다. 로드 밸런서가 응답하는 노드로만 트래픽을 전송하도록 백엔드 끝점을 모니터링해야 합니다.
  3. 두 컨트롤 플레인 노드로 트래픽을 전달하도록 로드 밸런서를 구성합니다. 다음 예제에서는 두 개의 컨트롤 플레인 노드를 구성하는 방법을 보여줍니다.

    frontend api_frontend
        bind *:6443
        mode tcp
        default_backend api_backend
    
    backend api_backend
        mode tcp
        balance roundrobin
        server cp0 <cp0_ip>:6443 check
        server cp1 <cp1_ip>:6443 check
    
    frontend ingress_frontend
        bind *:80
        bind *:443
        mode tcp
        default_backend ingress_backend
    
    backend ingress_backend
        mode tcp
        balance roundrobin
        server cp0 <cp0_ip>:80 check
        server cp1 <cp1_ip>:80 check
        server cp0 <cp0_ip>:443 check
        server cp1 <cp1_ip>:443 check
    Copy to Clipboard Toggle word wrap
  4. 로드 밸런서 구성을 확인합니다.

    1. 외부 클라이언트에서 다음 명령을 실행합니다.

      $ curl -k https://api.<cluster_name>.<base_domain>:6443/version
      Copy to Clipboard Toggle word wrap
    2. 외부 클라이언트에서 다음 명령을 실행하여 애플리케이션 경로에 액세스합니다.

      $ curl https://<app>.<cluster_name>.<base_domain>
      Copy to Clipboard Toggle word wrap

컨트롤 플레인 노드를 종료하고 다른 노드에서 요청을 계속 제공하는 동안 로드 밸런서가 해당 노드로 트래픽 전송을 중지하는지 확인할 수 있습니다.

2.1.5. 사용자 지정 br-ex 브릿지에 대한 매니페스트 오브젝트 생성

설치 후 클러스터의 네트워크 구성을 수정하려면 매니페스트 오브젝트를 생성해야 합니다. 매니페스트는 클러스터의 외부 네트워크 연결을 관리하는 br-ex 브리지를 구성합니다.

이 매니페스트 생성에 대한 지침은 "사용자 지정 br-ex 브리지의 매니페스트 파일 생성".

2.2. 펜싱을 사용하여 2-노드 OpenShift 클러스터 설치

중요

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

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

설치 관리자 프로비저닝 인프라 또는 사용자 프로비저닝 인프라 설치 방법을 사용하여 펜싱을 사용하여 2-노드 OpenShift 클러스터를 배포할 수 있습니다. 다음 예제에서는 두 가지 방법에 대한 샘플 install-config.yaml 구성을 제공합니다.

설치 관리자 프로비저닝 인프라 방법을 사용하여 펜싱을 사용하여 2-노드 OpenShift 클러스터를 배포하기 위한 템플릿으로 다음 install-config.yaml 구성을 사용할 수 있습니다.

참고

문제가 발생할 경우 클러스터를 복원할 수 있도록 진행하기 전에 etcd 백업을 수행하십시오.

샘플 install-config.yaml 구성

apiVersion: v1
baseDomain: example.com
compute:
- name: worker
  replicas: 0
controlPlane:
  name: master
  replicas: 2
  fencing:
    credentials:
      - hostname: <control_0_hostname>
        address: https://<redfish-api-url>
        username: <username>
        password: <password>
        certificateVerification: Disabled
      - hostname: <control_1_hostname>
        address: https://<redfish-api-url>
        username: <username>
        password: <password>
        certificateVerification: Enabled
metadata:
  name: <cluster_name>
featureSet: TechPreviewNoUpgrade
platform:
  baremetal:
    apiVIPs:
      - <api_ip>
    ingressVIPs:
      - <wildcard_ip>
    hosts:
      - name: <control_0_hostname>
        role: master
        bmc:
          address: <bmc_address>
          username: <bmc_username>
          password: <bmc_password>
        bootMACAddress: <boot_mac>
      - name: <control_1_hostname>
        role: master
        bmc:
          address: <bmc_address>
          username: <bmc_username>
          password: <bmc_password>
        bootMACAddress: <boot_mac>
pullSecret: '<pull_secret>'
sshKey: '<ssh_public_key>'
Copy to Clipboard Toggle word wrap

  • compute.replicas: 2-노드 펜싱 클러스터에 작업자 노드가 포함되어 있지 않기 때문에 이 필드를 0 으로 설정합니다.
  • controlPlane.replicas: 2-노드 펜싱 배포의 이 필드를 2 로 설정합니다.
  • fencing.credentials.hostname: 각 컨트롤 플레인 노드에 대한 BMC(Baseboard Management Console) 인증 정보를 제공합니다. 이러한 인증 정보는 노드 펜싱에 필요하며 분할 시나리오를 방지합니다.
  • fencing.credentials.certificateVerification: Redfish URL에서 내부 호스팅 끝점에 공통된 자체 서명 인증서를 사용하는 경우 이 필드를 Disabled 로 설정합니다. 이 필드를 유효한 CA 서명 인증서가 있는 URL에 대해 Enabled 로 설정합니다.
  • metadata.name: 클러스터 이름은 호스트 이름 및 DNS 레코드의 접두사로 사용됩니다.
  • featureSet: 이 필드를 TechPreviewNoUpgrade 로 설정하여 2-노드 OpenShift 클러스터 배포를 활성화합니다.
  • platform.baremetal.apiVIPsplatform.baremetal.ingressVIPs : API 및 Ingress 끝점의 가상 IP 모든 노드 및 외부 클라이언트에서 연결할 수 있는지 확인합니다.
  • pullSecret: 클러스터 구성 요소의 컨테이너 이미지를 가져오는 데 필요한 인증 정보가 포함되어 있습니다.
  • sshKey: 설치 후 클러스터 노드에 액세스하기 위한 SSH 공개 키입니다.

사용자 프로비저닝 인프라 방법을 사용하여 펜싱을 사용하여 2-노드 OpenShift 클러스터를 배포하기 위한 템플릿으로 다음 install-config.yaml 구성을 사용할 수 있습니다.

참고

문제가 발생할 경우 클러스터를 복원할 수 있도록 진행하기 전에 etcd 백업을 수행하십시오.

샘플 install-config.yaml 구성

apiVersion: v1
baseDomain: example.com
compute:
- name: worker
  replicas: 0
controlPlane:
  name: master
  replicas: 2
  fencing:
    credentials:
      - hostname: <control_0_hostname>
        address: https://<redfish-api-url>
        username: <username>
        password: <password>
      - hostname: <control_1_hostname>
        address: https://<redfish-api-url>
        username: <username>
        password: <password>
metadata:
  name: <cluster_name>
featureSet: TechPreviewNoUpgrade
platform:
  none: {}
pullSecret: '<pull_secret>'
sshKey: '<ssh_public_key>'
Copy to Clipboard Toggle word wrap

  • compute.replicas: 2-노드 펜싱 클러스터에 작업자 노드가 포함되어 있지 않기 때문에 이 필드를 0 으로 설정합니다.
  • controlPlane.replicas: 2-노드 펜싱 배포의 이 필드를 2 로 설정합니다.
  • fencing.credentials.hostname: 각 컨트롤 플레인 노드에 BMC 인증 정보를 제공합니다.
  • metadata.name: 클러스터 이름은 호스트 이름 및 DNS 레코드의 접두사로 사용됩니다.
  • featureSet: 2-노드 OpenShift 클러스터 배포를 활성화합니다.
  • platform.none 은 사용자 프로비저닝 인프라 배포에 대해 플랫폼을 none 으로 설정합니다. 베어 메탈 호스트는 설치 프로그램 외부에서 사전 프로비저닝됩니다.
  • pullSecret: 클러스터 구성 요소의 컨테이너 이미지를 가져오는 데 필요한 인증 정보가 포함되어 있습니다.
  • sshKey: 설치 후 클러스터 노드에 액세스하기 위한 SSH 공개 키입니다.

2.3. 설치 후 문제 해결 및 복구

중요

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

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

다음 섹션을 사용하면 펜싱을 사용하여 2-노드 OpenShift 클러스터에서 문제를 복구하는 데 도움이 됩니다.

중단 이벤트가 펜싱이 제대로 작동하지 않도록 하는 경우 수동 복구 단계를 수행해야 할 수 있습니다. 이 경우 컨트롤 플레인 노드에서 직접 명령을 실행하여 클러스터를 복구할 수 있습니다. 다음 순서로 시도해야 하는 4가지 주요 복구 시나리오가 있습니다.

  1. 펜싱 보안 업데이트: 올바르지 않거나 오래된 경우 BMC(Baseboard Management Console) 인증 정보를 새로 고칩니다.
  2. 단일 노드 장애 복구: 하나의 컨트롤 플레인 노드만 다운되었을 때 기능을 복원합니다.
  3. 전체 노드 장애 복구: 두 컨트롤 플레인 노드가 다운되었을 때 기능을 복원합니다.
  4. 복구할 수 없는 컨트롤 플레인 노드를 교체: 클러스터 기능을 복원하려면 노드를 교체하십시오.

사전 요구 사항

  • 컨트롤 플레인 노드에 대한 관리 액세스 권한이 있어야 합니다.
  • SSH를 사용하여 노드에 연결할 수 있습니다.
참고

문제가 발생할 경우 클러스터를 복원할 수 있도록 진행하기 전에 etcd 백업을 수행하십시오.

프로세스

  1. 펜싱 보안을 업데이트합니다.

    1. Cluster API를 사용할 수 없는 경우 클러스터 노드 중 하나에서 다음 명령을 실행하여 펜싱 시크릿을 업데이트합니다.

      $ sudo pcs stonith update <node_name>_redfish username=<user_name> password=<password>
      Copy to Clipboard Toggle word wrap

      Cluster API를 복구하거나 Cluster API를 이미 사용할 수 있는 경우 다음 단계에 설명된 대로 클러스터의 펜싱 시크릿을 업데이트하여 동기화 상태를 유지합니다.

    2. 다음 쉼표를 실행하여 컨트롤 플레인 노드의 기존 펜싱 시크릿의 사용자 이름과 암호를 편집합니다.

      $ oc project openshift-etcd
      Copy to Clipboard Toggle word wrap
      $ oc edit secret <node_name>-fencing
      Copy to Clipboard Toggle word wrap

      펜싱 보안을 업데이트한 후 클러스터가 복구되면 추가 작업이 필요하지 않습니다. 문제가 지속되면 다음 단계를 진행합니다.

  2. 단일 노드 실패에서 복구:

    1. 다음 명령을 실행하여 초기 진단을 수집합니다.

      $ sudo pcs status --full
      Copy to Clipboard Toggle word wrap

      이 명령은 현재 클러스터 및 리소스 상태에 대한 자세한 보기를 제공합니다. 출력을 사용하여 펜싱 또는 etcd 시작 문제를 식별할 수 있습니다.

    2. 필요한 경우 다음 추가 진단 명령을 실행합니다.

      클러스터에서 리소스를 재설정하고 다음 명령을 실행하여 Pacemaker에서 새로 시작하도록 지시합니다.

      $ sudo pcs resource cleanup
      Copy to Clipboard Toggle word wrap

      다음 명령을 실행하여 노드의 모든 Pacemaker 활동을 검토합니다.

      $ sudo journalctl -u pacemaker
      Copy to Clipboard Toggle word wrap

      다음 명령을 실행하여 etcd 리소스 시작 문제를 진단합니다.

      $ sudo journalctl -u pacemaker | grep podman-etcd
      Copy to Clipboard Toggle word wrap
    3. 다음 명령을 실행하여 노드의 펜싱 구성을 확인합니다.

      $ sudo pcs stonith config <node_name>_redfish
      Copy to Clipboard Toggle word wrap

      펜싱이 필요하지만 작동하지 않는 경우 Redfish 펜싱 끝점에 액세스할 수 있는지 확인하고 인증 정보가 올바른지 확인합니다.

    4. 펜싱이 작동하는 경우에도 etcd를 시작하지 않는 경우 다음 명령을 실행하여 백업에서 etcd를 복원합니다.

      $ sudo cp -r /var/lib/etcd-backup/* /var/lib/etcd/
      Copy to Clipboard Toggle word wrap
      $ sudo chown -R etcd:etcd /var/lib/etcd
      Copy to Clipboard Toggle word wrap

      복구에 성공하면 추가 작업이 필요하지 않습니다. 문제가 지속되면 다음 단계를 진행합니다.

  3. 전체 노드 오류에서 복구합니다.

    1. 두 컨트롤 플레인 노드의 전원을 켭니다.

      Pacemaker가 자동으로 시작되고 두 노드가 온라인 상태임을 감지하면 복구 작업이 시작됩니다. 복구가 예상대로 시작되지 않으면 이전 단계에서 설명하는 진단 명령을 사용하여 문제를 조사합니다.

    2. 클러스터에서 리소스를 재설정하고 다음 명령을 실행하여 Pacemaker에서 새로 시작하도록 지시합니다.

      $ sudo pcs resource cleanup
      Copy to Clipboard Toggle word wrap
    3. 다음 명령을 실행하여 리소스 시작 순서를 확인합니다.

      $ sudo pcs status --full
      Copy to Clipboard Toggle word wrap
    4. 다음 명령을 실행하여 kubelet이 실패하는 경우 pacemaker 서비스 저널을 검사합니다.

      $ sudo journalctl -u pacemaker
      Copy to Clipboard Toggle word wrap
      $ sudo journalctl -u kubelet
      Copy to Clipboard Toggle word wrap
    5. out-of-sync etcd를 처리합니다.

      하나의 노드에 최신 etcd가 있는 경우 Pacemaker에서 노드를 차단하여 학습자로 시작합니다. 이 프로세스가 중지되면 다음 명령을 실행하여 Redfish 펜싱 끝점 및 인증 정보를 확인합니다.

      $ sudo pcs stonith config
      Copy to Clipboard Toggle word wrap

      복구에 성공하면 추가 작업이 필요하지 않습니다. 문제가 지속되면 다음 단계에서 설명하는 대로 수동 복구를 수행합니다.

  4. 노드 중 하나를 복구할 수 없는 경우 이벤트에서 수동으로 복구해야 하는 경우 "두 노드 OpenShift 클러스터의 컨트롤 플레인 노드 교체" 절차를 따르십시오.

    클러스터에서 단일 노드가 손실되면 성능이 저하된 모드가 됩니다. 이 상태에서 Pacemaker는 쿼럼을 자동으로 차단 해제하고 나머지 노드에서 클러스터를 일시적으로 작동할 수 있습니다.

    두 노드 모두 실패하는 경우 Pacemaker에서 일반 클러스터 작업을 재개할 수 있도록 쿼럼을 다시 설정하려면 두 노드를 모두 다시 시작해야 합니다.

    두 노드 중 하나만 다시 시작할 수 있는 경우 노드 교체 절차에 따라 남아 있는 노드에서 쿼럼을 수동으로 다시 설정합니다.

    수동 복구가 여전히 필요하며 실패하는 경우 must-gather 및 SOS 보고서를 수집하고 버그를 제출합니다.

검증

컨트롤 플레인 노드와 etcd가 모두 올바르게 작동하는지 확인하는 방법에 대한 자세한 내용은 "선호를 사용하여 2-노드 OpenShift 클러스터에서 etcd 상태 확인"을 참조하십시오.

두 노드 OpenShift 클러스터에서 실패한 컨트롤 플레인 노드를 교체할 수 있습니다. 교체 노드는 실패한 노드와 동일한 호스트 이름 및 IP 주소를 사용해야 합니다.

사전 요구 사항

  • 작동 중인 Operator 컨트롤 플레인 노드가 있습니다.
  • 시스템이 실행되고 있지 않거나 노드가 준비되지 않았음을 확인했습니다.
  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
  • 실패한 노드의 호스트 이름 및 IP 주소를 알고 있습니다.
참고

문제가 발생할 경우 클러스터를 복원할 수 있도록 진행하기 전에 etcd 백업을 수행하십시오.

프로세스

  1. 다음 명령을 실행하여 쿼럼 상태를 확인합니다.

    $ sudo pcs quorum status
    Copy to Clipboard Toggle word wrap

    출력 예

    Quorum information
    ------------------
    Date:             Fri Oct  3 14:15:31 2025
    Quorum provider:  corosync_votequorum
    Nodes:            2
    Node ID:          1
    Ring ID:          1.16
    Quorate:          Yes
    
    Votequorum information
    ----------------------
    Expected votes:   2
    Highest expected: 2
    Total votes:      2
    Quorum:           1
    Flags:            2Node Quorate WaitForAll
    
    Membership information
    ----------------------
        Nodeid      Votes    Qdevice Name
             1          1         NR master-0 (local)
             2          1         NR master-1
    Copy to Clipboard Toggle word wrap

    1. 쿼럼이 유실되고 하나의 컨트롤 플레인 노드가 계속 실행 중인 경우 다음 명령을 실행하여 보류 중인 노드에서 쿼럼을 수동으로 복원합니다.

      $ sudo pcs quorum unblock
      Copy to Clipboard Toggle word wrap
    2. 하나의 노드만 실패한 경우 다음 명령을 실행하여 etcd가 감사자 노드에서 실행되고 있는지 확인합니다.

      $ sudo pcs resource status etcd
      Copy to Clipboard Toggle word wrap
    3. etcd가 실행되고 있지 않은 경우 다음 명령을 실행하여 etcd를 다시 시작하십시오.

      $ sudo pcs resource cleanup etcd
      Copy to Clipboard Toggle word wrap

      etcd가 계속 시작되지 않는 경우 다음 펜싱을 건너뛰십시오.

      중요

      이 명령을 실행하기 전에 교체 중인 노드에 액세스할 수 없는지 확인합니다. 그렇지 않으면 etcd 손상 위험이 있습니다.

      $ sudo pcs resource debug-stop etcd
      Copy to Clipboard Toggle word wrap
      $ sudo OCF_RESKEY_CRM_meta_notify_start_resource='etcd' pcs resource debug-start etcd
      Copy to Clipboard Toggle word wrap

      복구 후 취약점 노드에서 etcd가 성공적으로 실행되고 있어야 합니다.

  2. 다음 명령을 실행하여 실패한 노드의 etcd 시크릿을 삭제합니다.

    $ oc project openshift-etcd
    Copy to Clipboard Toggle word wrap
    $ oc delete secret etcd-peer-<node_name>
    Copy to Clipboard Toggle word wrap
    $ oc delete secret etcd-serving-<node_name>
    Copy to Clipboard Toggle word wrap
    $ oc delete secret etcd-serving-metrics-<node_name>
    Copy to Clipboard Toggle word wrap
    참고

    실패한 노드를 교체하려면 먼저 etcd 보안을 삭제해야 합니다. etcd가 실행 중인 경우 API 서버가 이러한 명령에 응답하는 데 약간의 시간이 걸릴 수 있습니다.

  3. 실패한 노드의 리소스를 삭제합니다.

    1. BareMetalHost (BMH) 오브젝트가 있는 경우 해당 오브젝트를 나열하여 다음 명령을 실행하여 교체 중인 호스트를 식별합니다.

      $ oc get bmh -n openshift-machine-api
      Copy to Clipboard Toggle word wrap
    2. 다음 명령을 실행하여 실패한 노드의 BMH 오브젝트를 삭제합니다.

      $ oc delete bmh/<bmh_name> -n openshift-machine-api
      Copy to Clipboard Toggle word wrap
    3. Machine 오브젝트를 나열하여 다음 명령을 실행하여 교체하려는 노드에 매핑되는 오브젝트를 식별합니다.

      $ oc get machines.machine.openshift.io -n openshift-machine-api
      Copy to Clipboard Toggle word wrap
    4. 다음 명령을 실행하여 Machine 오브젝트에서 머신 해시 값을 사용하여 라벨을 가져옵니다.

      $ oc get machines.machine.openshift.io/<machine_name> -n openshift-machine-api \
        -o jsonpath='Machine hash label: {.metadata.labels.machine\.openshift\.io/cluster-api-cluster}{"\n"}'
      Copy to Clipboard Toggle word wrap

      & lt;machine_name >을 클러스터의 Machine 오브젝트 이름으로 바꿉니다. 예를 들면 ostest-bfs7w-ctrlplane-0 입니다.

      Machine 오브젝트를 프로비저닝하려면 이 레이블이 필요합니다.

    5. 다음 명령을 실행하여 실패한 노드의 Machine 오브젝트를 삭제합니다.

      $ oc delete machines.machine.openshift.io/<machine_name>-<failed nodename> -n openshift-machine-api
      Copy to Clipboard Toggle word wrap
      참고

      Machine 오브젝트를 삭제한 후 노드 오브젝트가 자동으로 삭제됩니다.

  4. 동일한 이름과 IP 주소를 사용하여 실패한 호스트를 다시 생성합니다.

    중요

    설치 관리자 프로비저닝 인프라 또는 머신 API를 사용하여 원래 노드를 생성하는 경우에만 이 단계를 수행해야 합니다. 실패한 베어 메탈 컨트롤 플레인 노드를 교체하는 방법에 대한 자세한 내용은 " 베어 메탈에서 비정상적인 etcd 멤버 교체"를 참조하십시오.

    1. BMH 및 머신 오브젝트를 제거합니다. 머신 컨트롤러는 node 오브젝트를 자동으로 삭제합니다.
    2. 다음 샘플 구성을 사용하여 새 머신을 프로비저닝합니다.

      머신 오브젝트 구성 예

      apiVersion: machine.openshift.io/v1beta1
      kind: Machine
      metadata:
        annotations:
          metal3.io/BareMetalHost: openshift-machine-api/{bmh_name}
        finalizers:
        - machine.machine.openshift.io
        labels:
          machine.openshift.io/cluster-api-cluster: {machine_hash_label}
          machine.openshift.io/cluster-api-machine-role: master
          machine.openshift.io/cluster-api-machine-type: master
        name: {machine_name}
        namespace: openshift-machine-api
      spec:
        authoritativeAPI: MachineAPI
        metadata: {}
        providerSpec:
          value:
            apiVersion: baremetal.cluster.k8s.io/v1alpha1
            customDeploy:
              method: install_coreos
            hostSelector: {}
            image:
              checksum: ""
              url: ""
            kind: BareMetalMachineProviderSpec
            metadata:
              creationTimestamp: null
            userData:
              name: master-user-data-managed
      Copy to Clipboard Toggle word wrap

      • metadata.annotations.metal3.io/BareMetalHost: {bmh_name} 을 교체하려는 호스트와 연결된 BMH 오브젝트의 이름으로 바꿉니다.
      • labels.machine.openshift.io/cluster-api-cluster: {machine_hash_label} 을 사용자가 삭제한 시스템에서 가져온 라벨로 바꿉니다.
      • metadata.name: {machine_name} 을 사용자가 삭제한 머신 이름으로 바꿉니다.
    3. 다음 명령을 실행하여 BMC 자격 증명을 저장할 새 BMH 오브젝트와 시크릿을 생성합니다.

      cat <<EOF | oc apply -f -
      apiVersion: v1
      kind: Secret
      metadata:
        name: <secret_name>
        namespace: openshift-machine-api
      data:
        password: <password>
        username: <username>
      type: Opaque
      ---
      apiVersion: metal3.io/v1alpha1
      kind: BareMetalHost
      metadata:
        name: {bmh_name}
        namespace: openshift-machine-api
      spec:
        automatedCleaningMode: disabled
        bmc:
          address: <redfish_url>/{uuid}
          credentialsName: <name>
          disableCertificateVerification: true
        bootMACAddress: {boot_mac_address}
        bootMode: UEFI
        externallyProvisioned: false
        online: true
        rootDeviceHints:
          deviceName: /dev/disk/by-id/scsi-<serial_number>
        userData:
          name: master-user-data-managed
          namespace: openshift-machine-api
      EOF
      Copy to Clipboard Toggle word wrap
      • metadata.name: 보안 이름을 지정합니다.
      • metadata.name: {bmh_name} 을 사용자가 삭제한 BMH 오브젝트의 이름으로 바꿉니다.
      • BMC.address: {uuid} 를 생성한 노드의 UUID로 바꿉니다.
      • BMC.credentialsName: 이름을 생성한 보안 이름으로 바꿉니다.
      • bootMACAddress: provisioning 네트워크 인터페이스의 MAC 주소를 지정합니다. 프로비저닝 중에 Ironic과 통신할 때 노드가 사용하는 MAC 주소입니다.
  5. 다음 명령을 실행하여 새 노드가 Provisioned 상태에 도달했는지 확인합니다.

    $ oc get bmh -o wide
    Copy to Clipboard Toggle word wrap

    이 명령 출력의 STATUS 열 값은 프로비저닝 해야 합니다.

    참고

    프로비저닝 프로세스를 완료하는 데 10~20분이 걸릴 수 있습니다.

  6. 다음 명령을 실행하여 두 컨트롤 플레인 노드가 Ready 상태에 있는지 확인합니다.

    $ oc get nodes
    Copy to Clipboard Toggle word wrap

    이 명령 출력의 STATUS 열의 값은 두 노드 모두에 대해 Ready 여야 합니다.

  7. 다음 명령을 실행하여 Machine API가 이를 관리하지 못하도록 분리된 주석을 BMH 오브젝트에 적용합니다.

    $ oc annotate bmh <bmh_name> -n openshift-machine-api baremetalhost.metal3.io/detached='' --overwrite
    Copy to Clipboard Toggle word wrap
  8. 다음 명령을 실행하여 교체 노드에 Pacemaker 클러스터에 다시 가입합니다.

    참고

    교체 중인 노드가 아닌 세무용 컨트롤 플레인 노드에서 다음 명령을 실행합니다.

    $ sudo pcs cluster node remove <node_name>
    Copy to Clipboard Toggle word wrap
    $ sudo pcs cluster node add <node_name> addr=<node_ip> --start --enable
    Copy to Clipboard Toggle word wrap
  9. 다음 명령을 실행하여 실패한 노드의 오래된 작업을 삭제합니다.

    $ oc project openshift-etcd
    Copy to Clipboard Toggle word wrap
    $ oc delete job tnf-auth-job-<node_name>
    Copy to Clipboard Toggle word wrap
    $ oc delete job tnf-after-setup-job-<node_name>
    Copy to Clipboard Toggle word wrap

검증

컨트롤 플레인 노드와 etcd가 모두 올바르게 작동하는지 확인하는 방법에 대한 자세한 내용은 "선호를 사용하여 2-노드 OpenShift 클러스터에서 etcd 상태 확인"을 참조하십시오.

2.3.5. 펜싱을 사용하여 2-노드 OpenShift 클러스터에서 etcd 상태 확인

노드 복구 또는 유지보수 절차를 완료한 후 컨트롤 플레인 노드와 etcd가 모두 올바르게 작동하는지 확인합니다.

사전 요구 사항

  • cluster-admin 권한이 있는 사용자로 클러스터에 액세스할 수 있습니다.
  • SSH를 통해 하나 이상의 컨트롤 플레인 노드에 액세스할 수 있습니다.

프로세스

  1. 다음 명령을 실행하여 전체 노드 상태를 확인합니다.

    $ oc get nodes
    Copy to Clipboard Toggle word wrap

    이 명령은 두 컨트롤 플레인 노드가 모두 Ready 상태에 있는지 확인하여 스케줄링을 위한 워크로드를 수신할 수 있음을 나타냅니다.

  2. 다음 명령을 실행하여 cluster-etcd-operator 의 상태를 확인합니다.

    $ oc describe co/etcd
    Copy to Clipboard Toggle word wrap

    cluster-etcd-operator 는 etcd 설정의 상태를 관리하고 보고합니다. 상태를 검토하면 지속적인 문제 또는 성능이 저하된 조건을 식별하는 데 도움이 됩니다.

  3. 다음 명령을 실행하여 etcd 멤버 목록을 검토합니다.

    $ oc rsh -n openshift-etcd <etcd_pod> etcdctl member list -w table
    Copy to Clipboard Toggle word wrap

    이 명령은 현재 etcd 멤버 및 해당 역할을 표시합니다. learner 로 표시된 노드를 찾습니다. 이 노드는 투표 멤버가 되고 있음을 나타냅니다.

  4. 컨트롤 플레인 노드에서 다음 명령을 실행하여 Pacemaker 리소스 상태를 확인합니다.

    $ sudo pcs status --full
    Copy to Clipboard Toggle word wrap

    이 명령은 Pacemaker에서 관리하는 모든 리소스에 대한 자세한 개요를 제공합니다. 다음 조건이 충족되었는지 확인해야 합니다.

    • 두 노드가 모두 온라인 상태입니다.
    • kubeletetcd 리소스가 실행 중입니다.
    • 두 노드에 펜싱이 올바르게 구성되어 있습니다.

Legal Notice

Copyright © 2025 Red Hat

OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).

Modified versions must remove all Red Hat trademarks.

Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.

Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.

Linux® is the registered trademark of Linus Torvalds in the United States and other countries.

Java® is a registered trademark of Oracle and/or its affiliates.

XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.

MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.

Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.

The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.

All other trademarks are the property of their respective owners.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

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

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동