1.7. 플랫폼 "없음" 옵션을 사용하는 클러스터에 대한 요구 사항
이 섹션에서는 플랫폼 없음 옵션을 사용하도록 구성된 에이전트 기반 OpenShift 컨테이너 플랫폼 설치에 대한 요구 사항을 설명합니다.
가상화 또는 클라우드 환경에서 OpenShift Container Platform 클러스터를 설치하기 전에 테스트되지 않은 플랫폼에 OpenShift Container Platform 배포 지침의 정보를 검토하십시오.
1.7.1. 플랫폼 "없음" DNS 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform 배포의 경우 다음 구성 요소에 DNS 이름을 확인해야 합니다.
- Kubernetes API
- OpenShift Container Platform 애플리케이션 와일드카드
- 제어 평면 및 컴퓨팅 머신
Kubernetes API, 제어 플레인 머신, 컴퓨팅 머신에도 역방향 DNS 확인이 필요합니다.
DNS A/AAAA 또는 CNAME 레코드는 이름 확인에 사용되며 PTR 레코드는 역방향 이름 확인에 사용됩니다. 역방향 레코드는 Red Hat Enterprise Linux CoreOS(RHCOS)가 DHCP에서 호스트 이름을 제공하지 않는 한 모든 노드에 대한 호스트 이름을 설정하기 위해 역방향 레코드를 사용하기 때문에 중요합니다. 또한 역방향 레코드는 OpenShift Container Platform이 작동하는 데 필요한 인증서 서명 요청 (CSR)을 생성하는 데 사용됩니다.
DHCP 서버를 사용하여 각 클러스터 노드에 호스트 이름을 제공하는 것이 좋습니다.
다음 DNS 레코드는 platform none 옵션을 사용하는 OpenShift Container Platform 클러스터에 필요하며 설치 전에 미리 설정되어 있어야 합니다. 각 레코드에서 <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는 기본적으로 컴퓨팅 머신에서 실행됩니다. 이 레코드는 클러스터 외부의 클라이언트와 클러스터 내의 모든 노드에서 확인할 수 있어야 합니다.
예를 들어 |
| 컨트롤 플레인 머신 |
| 컨트롤 플레인 노드의 각 머신을 식별하는 DNS A/AAAA 또는 CNAME 레코드와 DNS PTR 레코드입니다. 이 레코드는 클러스터 내의 노드에서 확인할 수 있어야 합니다. |
| 컴퓨팅 머신 |
| 작업자 노드의 각 머신을 식별하는 DNS A/AAAA 또는 CNAME 레코드와 DNS PTR 레코드입니다. 이 레코드는 클러스터 내의 노드에서 확인할 수 있어야 합니다. |
OpenShift Container Platform 4.4 이상에서는 DNS 구성에서 etcd 호스트 및 SRV 레코드를 지정할 필요가 없습니다.
dig 명령을 사용하여 이름과 역방향 이름을 확인할 수 있습니다.
1.7.1.1. 플랫폼 "없음" 클러스터에 대한 DNS 구성 예 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 platform none 옵션을 사용하여 OpenShift Container Platform을 배포하는 데 필요한 DNS 요구 사항을 충족하는 A 및 PTR 레코드 구성 샘플을 제공합니다. 샘플은 하나의 DNS 솔루션을 선택하기 위한 조언을 제공하기 위한 것이 아닙니다.
이 예제에서 클러스터 이름은 ocp4이고 기본 도메인은 example.com입니다.
플랫폼 "없음" 클러스터에 대한 DNS A 레코드 구성 예
다음 예는 platform none 옵션을 사용하여 클러스터에서 이름 확인을 위한 샘플 A 레코드를 보여주는 BIND 영역 파일입니다.
예 1.1. 샘플 DNS 영역 데이터베이스
- 1
- Kubernetes API의 이름 확인을 제공합니다. 레코드는 API 로드 밸런서의 IP 주소를 나타냅니다.
- 2
- Kubernetes API의 이름 확인을 제공합니다. 레코드는 API 로드 밸런서의 IP 주소를 참조하며 내부 클러스터 통신에 사용됩니다.
- 3
- 와일드카드 경로의 이름 확인을 제공합니다. 레코드는 애플리케이션 인그레스 로드 밸런서의 IP 주소를 나타냅니다. 애플리케이션 인그레스 로드 밸런서는 Ingress 컨트롤러 Pod를 실행하는 머신을 대상으로 합니다. Ingress 컨트롤러 Pod는 기본적으로 컴퓨팅 머신에서 실행됩니다.참고
이 예제에서는 Kubernetes API 및 애플리케이션 인그레스 트래픽에 동일한 로드 밸런서를 사용합니다. 프로덕션 시나리오에서는 각각에 대해 개별적으로 로드 밸런서 인프라를 확장할 수 있도록 API 및 애플리케이션 인그레스 로드 밸런서를 별도로 배포할 수 있습니다.
- 4 5 6
- 컨트롤 플레인 시스템의 이름 확인을 제공합니다.
- 7 8
- 컴퓨팅 시스템의 이름 확인을 제공합니다.
플랫폼 "없음" 클러스터에 대한 DNS PTR 레코드 구성 예
다음 예제 BIND 영역 파일은 platform none 옵션을 사용하여 클러스터에서 역방향 이름 확인을 위한 샘플 PTR 레코드를 보여줍니다.
예 1.2. 역방향 레코드의 샘플 DNS 영역 데이터베이스
OpenShift Container Platform 애플리케이션 와일드카드에는 PTR 레코드가 필요하지 않습니다.
1.7.2. 플랫폼 "없음" 부하 분산 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform을 설치하기 전에 API와 애플리케이션 Ingress 부하 분산 인프라를 프로비저닝해야 합니다. 운영 시나리오에서는 API 및 애플리케이션 Ingress 로드 밸런서를 별도로 배포하여 각각에 대한 로드 밸런서 인프라를 격리하여 확장할 수 있습니다.
이러한 요구 사항은 플랫폼 없음 옵션을 사용하는 단일 노드 OpenShift 클러스터에는 적용되지 않습니다.
Red Hat Enterprise Linux(RHEL) 인스턴스에 API 및 애플리케이션 Ingress 로드 밸런서를 배포하려면 RHEL 구독을 별도로 구매해야 합니다.
로드 밸런서 인프라는 다음 요구 사항을 충족해야 합니다.
API 로드 밸런서: 플랫폼과 상호 작용하고 플랫폼을 구성할 수 있도록 사용자(인간과 시스템 모두)에게 공통 끝점을 제공합니다. 다음 조건을 설정합니다.
- Layer 4 로드 밸런싱 전용입니다. 이를 Raw TCP, SSL Passthrough 또는 SSL Bridge 모드라고 합니다. SSL Bridge 모드를 사용하는 경우, API 경로에 대해 SNI(Server Name Indication, 서버 이름 표시)를 활성화해야 합니다.
- 스테이트리스 로드 밸런싱 알고리즘입니다. 옵션은 로드 밸런서 구현에 따라 달라집니다.
중요API 로드 밸런서에 대해 세션 지속성을 구성하지 마세요.
로드 밸런서의 전면과 후면 모두에서 다음 포트를 구성하십시오.
Expand 표 1.5. API 로드 밸런서 포트 백엔드 시스템(풀 멤버) 내부 외부 설명 6443제어 평면. API 서버 상태 검사 프로브에 대한
/readyz끝점을 구성해야 합니다.X
X
Kubernetes API 서버
22623제어 평면.
X
시스템 구성 서버
참고API 서버가
/readyz엔드포인트를 해제하는 시점부터 풀에서 API 서버 인스턴스가 제거되는 시점까지 시간이 30초를 넘지 않도록 로드 밸런서를 구성해야 합니다./readyz가 오류를 반환하거나 정상 상태가 된 후 정해진 시간 안에 끝점이 제거 또는 추가되어야 합니다. 5초 또는 10초의 프로빙 주기(두 번의 성공적인 요청은 정상 상태, 세 번의 요청은 비정상 상태)는 충분한 테스트를 거친 값입니다.애플리케이션 수신 로드 밸런서 : 클러스터 외부에서 유입되는 애플리케이션 트래픽에 대한 수신 지점을 제공합니다. 인그레스 라우터에 대한 작업 구성이 OpenShift Container Platform 클러스터에 필요합니다.
다음 조건을 설정합니다.
- Layer 4 로드 밸런싱 전용입니다. 이를 Raw TCP, SSL Passthrough 또는 SSL Bridge 모드라고 합니다. SSL Bridge 모드를 사용하는 경우 인그레스 경로에 대해 SNI(Server Name Indication, 서버 이름 표시)를 활성화해야 합니다.
- 사용 가능한 옵션과 플랫폼에서 호스팅되는 애플리케이션 유형에 따라 연결 기반 또는 세션 기반 지속성이 권장됩니다.
작은 정보클라이언트의 실제 IP 주소를 애플리케이션 Ingress 로드 밸런서에서 확인할 수 있는 경우, 소스 IP 기반 세션 지속성을 활성화하면 엔드투엔드 TLS 암호화를 사용하는 애플리케이션의 성능이 향상될 수 있습니다.
로드 밸런서의 전면과 후면 모두에서 다음 포트를 구성하십시오.
Expand 표 1.6. 애플리케이션 인그레스 로드 밸런서 포트 백엔드 시스템(풀 멤버) 내부 외부 설명 443기본적으로 인그레스 컨트롤러 pod, 컴퓨팅 또는 작업자를 실행하는 시스템입니다.
X
X
HTTPS 트래픽
80기본적으로 인그레스 컨트롤러 pod, 컴퓨팅 또는 작업자를 실행하는 시스템입니다.
X
X
HTTP 트래픽
참고컴퓨팅 노드가 0인 3-노드 클러스터를 배포하는 경우 Ingress 컨트롤러 Pod는 컨트롤 플레인 노드에서 실행됩니다. 3-노드 클러스터 배포에서 HTTP 및 HTTPS 트래픽을 컨트롤 플레인 노드로 라우팅하도록 애플리케이션 인그레스 로드 밸런서를 구성해야 합니다.
1.7.2.1. 플랫폼 "없음" 클러스터에 대한 로드 밸런서 구성 예 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 플랫폼 없음 옵션을 사용하여 클러스터에 대한 부하 분산 요구 사항을 충족하는 예제 API 및 애플리케이션 Ingress 부하 분산 장치 구성을 제공합니다. 샘플은 HAProxy 로드 밸런서에 대한 /etc/haproxy/haproxy.cfg 구성입니다. 이 예제에서는 하나의 로드 밸런싱 솔루션을 선택하기 위한 조언을 제공하는 것을 목적으로 하지 않습니다.
이 예제에서는 Kubernetes API 및 애플리케이션 인그레스 트래픽에 동일한 로드 밸런서를 사용합니다. 프로덕션 시나리오에서는 각각에 대해 개별적으로 로드 밸런서 인프라를 확장할 수 있도록 API 및 애플리케이션 인그레스 로드 밸런서를 별도로 배포할 수 있습니다.
HAProxy를 로드 밸런서로 사용하고 SELinux가 enforcing으로 설정된 경우 HAProxy 서비스가 setsebool -P haproxy_connect_any=1을 실행하여 구성된 TCP 포트에 바인딩할 수 있는지 확인해야 합니다.
예 1.3. API 및 애플리케이션 인그레스 로드 밸런서 구성 샘플
- 1
- 포트
6443은 Kubernetes API 트래픽을 처리하고 컨트롤 플레인 시스템을 가리킵니다. - 2
- 포트
22623은 머신 구성 서버 트래픽을 처리하고 컨트롤 플레인 시스템을 가리킵니다. - 3
- 포트
443은 HTTPS 트래픽을 처리하고 Ingress 컨트롤러 Pod를 실행하는 시스템을 가리킵니다. Ingress 컨트롤러 Pod는 기본적으로 컴퓨팅 머신에서 실행됩니다. - 4
- 포트
80은 HTTP 트래픽을 처리하고 Ingress 컨트롤러 Pod를 실행하는 머신을 가리킵니다. Ingress 컨트롤러 Pod는 기본적으로 컴퓨팅 머신에서 실행됩니다.참고컴퓨팅 노드가 0인 3-노드 클러스터를 배포하는 경우 Ingress 컨트롤러 Pod는 컨트롤 플레인 노드에서 실행됩니다. 3-노드 클러스터 배포에서 HTTP 및 HTTPS 트래픽을 컨트롤 플레인 노드로 라우팅하도록 애플리케이션 인그레스 로드 밸런서를 구성해야 합니다.
HAProxy를 로드 밸런서로 사용하는 경우 HAProxy 노드에서 netstat -nltupe를 실행하여 haproxy 프로세스가 포트 6443, 22623, 443 및 80에서 수신 대기 중인지 확인할 수 있습니다.