두 개의 노드 OpenShift 클러스터 설치
단일 노드에 OpenShift Container Platform 설치
초록
1장. Arbiter를 사용하는 2-Node 링크 복사링크가 클립보드에 복사되었습니다!
두 개의 컨트롤 플레인 노드와 하나의 로컬 arbiter 노드가 있는 OpenShift Container Platform 클러스터는 컴팩트하고 비용 효율적인 OpenShift Container Platform 토폴로지입니다. arbiter 노드는 전체 etcd 데이터를 저장하여 etcd 쿼럼을 유지 관리하고 분할 뇌를 방지합니다. arbiter 노드는 추가 컨트롤 플레인 구성 요소 kube-apiserver 및 kube-controller-manager 를 실행하지 않으며 워크로드를 실행하지 않습니다.
두 개의 컨트롤 플레인 노드와 하나의 로컬 arbiter 노드가 있는 클러스터를 설치하려면 arbiter 역할을 노드 중 하나에 할당하고 클러스터의 컨트롤 플레인 노드 수를 2로 설정합니다. OpenShift Container Platform은 현재 중재자 노드 수에 제한을 적용하지 않지만 일반적인 배포에는 하드웨어 리소스 사용을 최소화하기 위한 하나만 포함됩니다.
설치 후 두 개의 컨트롤 플레인 노드와 로컬 arbiter 노드가 있지만 표준 멀티 노드 클러스터에는 추가 arbiter 노드를 추가할 수 있습니다. 또한 로컬 노드 arbiter 및 표준 토폴로지를 사용하여 2-노드 OpenShift 클러스터를 변환할 수 없습니다.
다음 방법 중 하나를 사용하여 두 개의 컨트롤 플레인 노드와 하나의 로컬 arbiter 노드가 있는 클러스터를 설치할 수 있습니다.
- 베어 메탈에 설치: 로컬 arbiter 노드 구성
- 에이전트 기반 설치 프로그램으로 설치: 로컬 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 클러스터에는 다음 호스트가 필요합니다.
| 호스트 | 설명 |
|---|---|
| 컨트롤 플레인 시스템 두 개 | 컨트롤 플레인 시스템은 컨트롤 플레인을 구성하는 Kubernetes 및 OpenShift Container Platform 서비스를 실행합니다. |
| 임시 부트스트랩 시스템 한 개 | 컨트롤 플레인 시스템에 OpenShift Container Platform 클러스터를 배포하려면 부트스트랩 머신이 필요합니다. 클러스터를 설치한 후 부트스트랩 시스템을 제거할 수 있습니다. |
부트스트랩, 컨트롤 플레인 시스템은 운영 체제로 RHCOS (Red Hat Enterprise Linux CoreOS)를 사용해야 합니다. RHCOS 설치 및 부트스트랩 프로세스 시작에 대한 자세한 내용은 RHCOS 설치 및 OpenShift Container Platform 부트스트랩 프로세스 시작을참조하십시오.
RHCOS를 사용해야 하는 요구 사항은 사용자 프로비저닝 인프라 배포에만 적용됩니다. 설치 프로그램이 프로비저닝한 인프라 배포의 경우 부트스트랩 및 컨트롤 플레인 시스템은 설치 프로그램에 의해 자동으로 프로비저닝되며 RHCOS를 수동으로 설치할 필요가 없습니다.
2.1.1. 펜싱을 사용하여 2-노드 OpenShift 클러스터를 설치하기 위한 최소 리소스 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
각 클러스터 시스템이 다음과 같은 최소 요구사항을 충족해야 합니다.
| 머신 | 운영 체제 | CPU [1] | RAM | 스토리지 | 초당 입력/출력(IOPS) [1] |
|---|---|---|---|---|---|
| 부트스트랩 | RHCOS | 4 | 16GB | 120GB | 300 |
| 컨트롤 플레인 | RHCOS | 4 | 16GB | 120GB | 300 |
- SMT(동시 멀티스레딩) 또는 Hyper-Threading이 활성화되지 않은 경우 하나의 CPU가 하나의 물리적 코어와 동일합니다. 활성화하면 다음 공식을 사용하여 해당 비율을 계산합니다. (코어당 스레드 수 × 코어 수) × 소켓 = CPU입니다.
- 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> 형식입니다.
| 구성 요소 | 레코드 | 설명 |
|---|---|---|
| Kubernetes API |
| API 로드 밸런서를 식별하는 DNS A/AAAA 또는 CNAME 레코드와 DNS PTR 레코드입니다. 이 레코드는 클러스터 외부의 클라이언트와 클러스터 내의 모든 노드에서 확인할 수 있어야 합니다. |
|
| 내부적으로 API 로드 밸런서를 식별하는 DNS A/AAAA 또는 CNAME 레코드와 DNS PTR 레코드입니다. 이 레코드는 클러스터 내의 모든 노드에서 확인할 수 있어야 합니다. 중요 API 서버는 Kubernetes에 기록된 호스트 이름으로 작업자 노드를 확인할 수 있어야 합니다. API 서버가 노드 이름을 확인할 수 없는 경우 프록시된 API 호출이 실패할 수 있으며 pod에서 로그를 검색할 수 없습니다. | |
| 라우트 |
| 애플리케이션 인그레스 로드 밸런서를 참조하는 와일드카드 DNS A/AAA 또는 CNAME 레코드입니다. 애플리케이션 인그레스 로드 밸런서는 Ingress 컨트롤러 Pod를 실행하는 머신을 대상으로 합니다. 기본적으로 Ingress 컨트롤러 Pod는 컴퓨팅 노드에서 실행됩니다. 2-노드 또는 3-노드 클러스터와 같은 전용 컴퓨팅 노드가 없는 클러스터 토폴로지에서 컨트롤 플레인 노드도 작업자 레이블을 전송하므로 Ingress Pod는 컨트롤 플레인 노드에 예약됩니다. 이 레코드는 클러스터 외부의 클라이언트와 클러스터 내의 모든 노드에서 확인할 수 있어야 합니다.
예를 들어 |
| 부트스트랩 시스템 |
| 부트스트랩 머신을 식별하는 DNS A/AAAA 또는 CNAME 레코드와 DNS PTR 레코드입니다. 이 레코드는 클러스터 내의 노드에서 확인할 수 있어야 합니다. |
| 컨트롤 플레인 머신 |
| 컨트롤 플레인 노드의 각 머신을 식별하는 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 영역 데이터베이스
-
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 영역 데이터베이스
-
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>
<cluster_name>.<base_domain>
예를 들면 다음과 같습니다.
test-cluster.example.com
test-cluster.example.com
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> 형식입니다.
| 구성 요소 | 레코드 | 설명 |
|---|---|---|
| Kubernetes API |
| A/AAAA 레코드와 PTR 레코드는 API 로드 밸런서를 식별합니다. 이 레코드는 클러스터 외부의 클라이언트와 클러스터 내의 모든 노드에서 확인할 수 있어야 합니다. |
| 라우트 |
| 와일드카드 A/AAAA 레코드는 애플리케이션 인그레스 로드 밸런서를 나타냅니다. 애플리케이션 인그레스 로드 밸런서는 Ingress 컨트롤러 Pod를 실행하는 노드를 대상으로 합니다. Ingress 컨트롤러 Pod는 기본적으로 작업자 노드에서 실행됩니다. 이 레코드는 클러스터 외부의 클라이언트와 클러스터 내의 모든 노드에서 확인할 수 있어야 합니다.
예를 들어 |
dig 명령을 사용하여 DNS 확인을 확인할 수 있습니다.
2.1.4. 펜싱을 사용하여 2-노드 클러스터의 인그레스 로드 밸런서 구성 링크 복사링크가 클립보드에 복사되었습니다!
펜싱을 사용하여 2노드 OpenShift 클러스터를 설치하기 전에 외부 Ingress 로드 밸런서(LB)를 구성해야 합니다. Ingress LB는 외부 애플리케이션 트래픽을 컨트롤 플레인 노드에서 실행되는 Ingress 컨트롤러 Pod로 전달합니다. 두 노드 모두 적극적으로 트래픽을 수신할 수 있습니다.
사전 요구 사항
- 펜싱이 활성화된 두 개의 컨트롤 플레인 노드가 있습니다.
- 로드 밸런서에서 두 컨트롤 플레인 노드로의 네트워크 연결이 있습니다.
-
api.<cluster_name>.<base_domain> 및> 에 대한 DNS 레코드를 생성했습니다.*.apps.<cluster_name>.<base_domain - 끝점에서 상태 점검을 지원하는 외부 로드 밸런서가 있습니다.
프로세스
다음 포트에 대한 트래픽을 전달하도록 로드 밸런서를 구성합니다.
-
6443: Kubernetes API 서버 80및443: 애플리케이션 인그레스두 컨트롤 플레인 노드로 트래픽을 전달해야 합니다.
-
- 로드 밸런서에서 상태 점검을 구성합니다. 로드 밸런서가 응답하는 노드로만 트래픽을 전송하도록 백엔드 끝점을 모니터링해야 합니다.
두 컨트롤 플레인 노드로 트래픽을 전달하도록 로드 밸런서를 구성합니다. 다음 예제에서는 두 개의 컨트롤 플레인 노드를 구성하는 방법을 보여줍니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 로드 밸런서 구성을 확인합니다.
외부 클라이언트에서 다음 명령을 실행합니다.
curl -k https://api.<cluster_name>.<base_domain>:6443/version
$ curl -k https://api.<cluster_name>.<base_domain>:6443/versionCopy to Clipboard Copied! Toggle word wrap Toggle overflow 외부 클라이언트에서 다음 명령을 실행하여 애플리케이션 경로에 액세스합니다.
curl https://<app>.<cluster_name>.<base_domain>
$ curl https://<app>.<cluster_name>.<base_domain>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
컨트롤 플레인 노드를 종료하고 다른 노드에서 요청을 계속 제공하는 동안 로드 밸런서가 해당 노드로 트래픽 전송을 중지하는지 확인할 수 있습니다.
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.2.1. 펜싱을 사용하여 2-노드 설치 관리자 프로비저닝 인프라 클러스터의 샘플 install-config.yaml 링크 복사링크가 클립보드에 복사되었습니다!
설치 관리자 프로비저닝 인프라 방법을 사용하여 펜싱을 사용하여 2-노드 OpenShift 클러스터를 배포하기 위한 템플릿으로 다음 install-config.yaml 구성을 사용할 수 있습니다.
문제가 발생할 경우 클러스터를 복원할 수 있도록 진행하기 전에 etcd 백업을 수행하십시오.
샘플 install-config.yaml 구성
-
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.apiVIPs및platform.baremetal.ingressVIPs: API 및 Ingress 끝점의 가상 IP 모든 노드 및 외부 클라이언트에서 연결할 수 있는지 확인합니다. -
pullSecret: 클러스터 구성 요소의 컨테이너 이미지를 가져오는 데 필요한 인증 정보가 포함되어 있습니다. -
sshKey: 설치 후 클러스터 노드에 액세스하기 위한 SSH 공개 키입니다.
2.2.2. 펜싱을 사용하여 2-노드 사용자 프로비저닝 인프라 클러스터의 샘플 install-config.yaml 링크 복사링크가 클립보드에 복사되었습니다!
사용자 프로비저닝 인프라 방법을 사용하여 펜싱을 사용하여 2-노드 OpenShift 클러스터를 배포하기 위한 템플릿으로 다음 install-config.yaml 구성을 사용할 수 있습니다.
문제가 발생할 경우 클러스터를 복원할 수 있도록 진행하기 전에 etcd 백업을 수행하십시오.
샘플 install-config.yaml 구성
-
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 클러스터에서 문제를 복구하는 데 도움이 됩니다.
2.3.3. 펜싱을 사용하여 2-노드 OpenShift 클러스터에서 컨트롤 플레인 노드 교체 링크 복사링크가 클립보드에 복사되었습니다!
두 노드 OpenShift 클러스터에서 실패한 컨트롤 플레인 노드를 교체할 수 있습니다. 교체 노드는 실패한 노드와 동일한 호스트 이름 및 IP 주소를 사용해야 합니다.
사전 요구 사항
- 작동 중인 Operator 컨트롤 플레인 노드가 있습니다.
- 시스템이 실행되고 있지 않거나 노드가 준비되지 않았음을 확인했습니다.
-
cluster-admin역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. - 실패한 노드의 호스트 이름 및 IP 주소를 알고 있습니다.
문제가 발생할 경우 클러스터를 복원할 수 있도록 진행하기 전에 etcd 백업을 수행하십시오.
프로세스
다음 명령을 실행하여 쿼럼 상태를 확인합니다.
sudo pcs quorum status
$ sudo pcs quorum statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 쿼럼이 유실되고 하나의 컨트롤 플레인 노드가 계속 실행 중인 경우 다음 명령을 실행하여 보류 중인 노드에서 쿼럼을 수동으로 복원합니다.
sudo pcs quorum unblock
$ sudo pcs quorum unblockCopy to Clipboard Copied! Toggle word wrap Toggle overflow 하나의 노드만 실패한 경우 다음 명령을 실행하여 etcd가 감사자 노드에서 실행되고 있는지 확인합니다.
sudo pcs resource status etcd
$ sudo pcs resource status etcdCopy to Clipboard Copied! Toggle word wrap Toggle overflow etcd가 실행되고 있지 않은 경우 다음 명령을 실행하여 etcd를 다시 시작하십시오.
sudo pcs resource cleanup etcd
$ sudo pcs resource cleanup etcdCopy to Clipboard Copied! Toggle word wrap Toggle overflow etcd가 계속 시작되지 않는 경우 다음 펜싱을 건너뛰십시오.
중요이 명령을 실행하기 전에 교체 중인 노드에 액세스할 수 없는지 확인합니다. 그렇지 않으면 etcd 손상 위험이 있습니다.
sudo pcs resource debug-stop etcd
$ sudo pcs resource debug-stop etcdCopy to Clipboard Copied! Toggle word wrap Toggle overflow sudo OCF_RESKEY_CRM_meta_notify_start_resource='etcd' pcs resource debug-start etcd
$ sudo OCF_RESKEY_CRM_meta_notify_start_resource='etcd' pcs resource debug-start etcdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 복구 후 취약점 노드에서 etcd가 성공적으로 실행되고 있어야 합니다.
다음 명령을 실행하여 실패한 노드의 etcd 시크릿을 삭제합니다.
oc project openshift-etcd
$ oc project openshift-etcdCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete secret etcd-peer-<node_name>
$ oc delete secret etcd-peer-<node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete secret etcd-serving-<node_name>
$ oc delete secret etcd-serving-<node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete secret etcd-serving-metrics-<node_name>
$ oc delete secret etcd-serving-metrics-<node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고실패한 노드를 교체하려면 먼저 etcd 보안을 삭제해야 합니다. etcd가 실행 중인 경우 API 서버가 이러한 명령에 응답하는 데 약간의 시간이 걸릴 수 있습니다.
실패한 노드의 리소스를 삭제합니다.
BareMetalHost(BMH) 오브젝트가 있는 경우 해당 오브젝트를 나열하여 다음 명령을 실행하여 교체 중인 호스트를 식별합니다.oc get bmh -n openshift-machine-api
$ oc get bmh -n openshift-machine-apiCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 실패한 노드의 BMH 오브젝트를 삭제합니다.
oc delete bmh/<bmh_name> -n openshift-machine-api
$ oc delete bmh/<bmh_name> -n openshift-machine-apiCopy to Clipboard Copied! Toggle word wrap Toggle overflow Machine오브젝트를 나열하여 다음 명령을 실행하여 교체하려는 노드에 매핑되는 오브젝트를 식별합니다.oc get machines.machine.openshift.io -n openshift-machine-api
$ oc get machines.machine.openshift.io -n openshift-machine-apiCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
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"}'$ 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 Copied! Toggle word wrap Toggle overflow &
lt;machine_name>을 클러스터의Machine오브젝트 이름으로 바꿉니다. 예를 들면ostest-bfs7w-ctrlplane-0입니다.새
Machine오브젝트를 프로비저닝하려면 이 레이블이 필요합니다.다음 명령을 실행하여 실패한 노드의
Machine오브젝트를 삭제합니다.oc delete machines.machine.openshift.io/<machine_name>-<failed nodename> -n openshift-machine-api
$ oc delete machines.machine.openshift.io/<machine_name>-<failed nodename> -n openshift-machine-apiCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고Machine오브젝트를 삭제한 후 노드 오브젝트가 자동으로 삭제됩니다.
동일한 이름과 IP 주소를 사용하여 실패한 호스트를 다시 생성합니다.
중요설치 관리자 프로비저닝 인프라 또는 머신 API를 사용하여 원래 노드를 생성하는 경우에만 이 단계를 수행해야 합니다. 실패한 베어 메탈 컨트롤 플레인 노드를 교체하는 방법에 대한 자세한 내용은 " 베어 메탈에서 비정상적인 etcd 멤버 교체"를 참조하십시오.
-
BMH 및
머신오브젝트를 제거합니다. 머신 컨트롤러는 node 오브젝트를 자동으로 삭제합니다. 다음 샘플 구성을 사용하여 새 머신을 프로비저닝합니다.
머신오브젝트 구성 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
metadata.annotations.metal3.io/BareMetalHost:{bmh_name}을 교체하려는 호스트와 연결된 BMH 오브젝트의 이름으로 바꿉니다. -
labels.machine.openshift.io/cluster-api-cluster:{machine_hash_label}을 사용자가 삭제한 시스템에서 가져온 라벨로 바꿉니다. -
metadata.name:{machine_name}을 사용자가 삭제한 머신 이름으로 바꿉니다.
-
다음 명령을 실행하여 BMC 자격 증명을 저장할 새 BMH 오브젝트와 시크릿을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
metadata.name: 보안 이름을 지정합니다. -
metadata.name:{bmh_name}을 사용자가 삭제한 BMH 오브젝트의 이름으로 바꿉니다. -
BMC.address:{uuid}를 생성한 노드의 UUID로 바꿉니다. -
BMC.credentialsName: 이름을 생성한 보안 이름으로 바꿉니다. -
bootMACAddress: provisioning 네트워크 인터페이스의 MAC 주소를 지정합니다. 프로비저닝 중에 Ironic과 통신할 때 노드가 사용하는 MAC 주소입니다.
-
-
BMH 및
다음 명령을 실행하여 새 노드가
Provisioned상태에 도달했는지 확인합니다.oc get bmh -o wide
$ oc get bmh -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령 출력의
STATUS열 값은프로비저닝해야 합니다.참고프로비저닝 프로세스를 완료하는 데 10~20분이 걸릴 수 있습니다.
다음 명령을 실행하여 두 컨트롤 플레인 노드가
Ready상태에 있는지 확인합니다.oc get nodes
$ oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령 출력의
STATUS열의 값은 두 노드 모두에 대해Ready여야 합니다.다음 명령을 실행하여 Machine API가 이를 관리하지 못하도록
분리된주석을 BMH 오브젝트에 적용합니다.oc annotate bmh <bmh_name> -n openshift-machine-api baremetalhost.metal3.io/detached='' --overwrite
$ oc annotate bmh <bmh_name> -n openshift-machine-api baremetalhost.metal3.io/detached='' --overwriteCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 교체 노드에 Pacemaker 클러스터에 다시 가입합니다.
참고교체 중인 노드가 아닌 세무용 컨트롤 플레인 노드에서 다음 명령을 실행합니다.
sudo pcs cluster node remove <node_name>
$ sudo pcs cluster node remove <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo pcs cluster node add <node_name> addr=<node_ip> --start --enable
$ sudo pcs cluster node add <node_name> addr=<node_ip> --start --enableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 실패한 노드의 오래된 작업을 삭제합니다.
oc project openshift-etcd
$ oc project openshift-etcdCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete job tnf-auth-job-<node_name>
$ oc delete job tnf-auth-job-<node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete job tnf-after-setup-job-<node_name>
$ oc delete job tnf-after-setup-job-<node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
컨트롤 플레인 노드와 etcd가 모두 올바르게 작동하는지 확인하는 방법에 대한 자세한 내용은 "선호를 사용하여 2-노드 OpenShift 클러스터에서 etcd 상태 확인"을 참조하십시오.
2.3.5. 펜싱을 사용하여 2-노드 OpenShift 클러스터에서 etcd 상태 확인 링크 복사링크가 클립보드에 복사되었습니다!
노드 복구 또는 유지보수 절차를 완료한 후 컨트롤 플레인 노드와 etcd가 모두 올바르게 작동하는지 확인합니다.
사전 요구 사항
-
cluster-admin권한이 있는 사용자로 클러스터에 액세스할 수 있습니다. - SSH를 통해 하나 이상의 컨트롤 플레인 노드에 액세스할 수 있습니다.
프로세스
다음 명령을 실행하여 전체 노드 상태를 확인합니다.
oc get nodes
$ oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 두 컨트롤 플레인 노드가 모두
Ready상태에 있는지 확인하여 스케줄링을 위한 워크로드를 수신할 수 있음을 나타냅니다.다음 명령을 실행하여
cluster-etcd-operator의 상태를 확인합니다.oc describe co/etcd
$ oc describe co/etcdCopy to Clipboard Copied! Toggle word wrap Toggle overflow cluster-etcd-operator는 etcd 설정의 상태를 관리하고 보고합니다. 상태를 검토하면 지속적인 문제 또는 성능이 저하된 조건을 식별하는 데 도움이 됩니다.다음 명령을 실행하여 etcd 멤버 목록을 검토합니다.
oc rsh -n openshift-etcd <etcd_pod> etcdctl member list -w table
$ oc rsh -n openshift-etcd <etcd_pod> etcdctl member list -w tableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 현재 etcd 멤버 및 해당 역할을 표시합니다.
learner로 표시된 노드를 찾습니다. 이 노드는 투표 멤버가 되고 있음을 나타냅니다.컨트롤 플레인 노드에서 다음 명령을 실행하여 Pacemaker 리소스 상태를 확인합니다.
sudo pcs status --full
$ sudo pcs status --fullCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 Pacemaker에서 관리하는 모든 리소스에 대한 자세한 개요를 제공합니다. 다음 조건이 충족되었는지 확인해야 합니다.
- 두 노드가 모두 온라인 상태입니다.
-
kubelet및etcd리소스가 실행 중입니다. - 두 노드에 펜싱이 올바르게 구성되어 있습니다.
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.