기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
IPv6 클러스터에서 EMR on EKS 실행
IPv6 Amazon EKS 클러스터에서 Amazon EMR on EKS 워크로드를 실행하여 훨씬 더 큰 주소 공간을 활용하고 Kubernetes 환경이 확장될 때 IPv4 주소 소진을 방지할 수 있습니다.
IPv6 Amazon EKS 클러스터 생성에 대한 자세한 내용은 Amazon EKS 사용 설명서의 클러스터, 포드 및 서비스의 IPv6 주소를 참조하세요.
지원되는 제출 모델
IPv6 Amazon EKS 클러스터에서 지원되는 제출 모델은 다음과 같습니다.
-
StartJobRun -
Spark Connect 대화형 엔드포인트
-
Amazon SageMaker Unified Studio
-
Spark 연산자
-
Flink 연산자
-
Livy 연산자
지원되지 않는 제출 모델
Jupyter Enterprise Gateway(JEG) 엔드포인트는 IPv6 클러스터에서 지원되지 않습니다.
추가 구성이 필요하지 않은 제출 모델
다음 제출 모델의 경우 IPv4와 동일한 방식으로 IPv6 클러스터에서 Amazon EMR 워크로드를 설정하고 제출할 수 있습니다. IPv4 추가 구성이 필요하지 않습니다.
-
StartJobRun -
Spark Connect 대화형 엔드포인트
-
Amazon SageMaker Unified Studio
운영자 기반 제출 모델
운영자 기반 제출 모델은 IPv6 호환성을 위해 추가 구성이 필요합니다. 다음 섹션에서는 각 연산자에 필요한 구성을 설명합니다.
Spark 연산자
IPv6 클러스터에서 Spark Operator 워크로드를 실행하려면 SparkApplication 사양에 다음 Spark 구성을 추가합니다. 이 구성은 지원되는 모든 릴리스에 필요합니다.
spec: sparkConf: "spark.kubernetes.driver.service.ipFamilies": "IPv6"
이 구성은 Kubernetes 클라이언트에 IPv6 IP 패밀리로 Spark 드라이버 서비스를 생성하도록 지시합니다. 드라이버 서비스가 없으면 기본적으로 IPv4로 설정되며, IPv6-only 클러스터에서는 지원되지 않습니다.
또한 emr-7.x 릴리스의 경우 Spark Operator 배포에서이 환경 변수를 설정하여 다음 해결 방법을 적용해야 합니다.
KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true
Spark 연산자를 설치한 후 다음 명령을 실행하여 환경 변수를 설정합니다.
kubectl set env deployment/spark-operator-deployment-name\ KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true \ -nspark-operator-namespace
이 해결 방법은 GitHub에서 IPv6 호스트 이름 확인과 관련된 알려진 문제를emr-7.x 릴리스는 OkHttp 3.x에 의존하는 fabric8 Kubernetes 클라이언트 버전을 사용하며, 이는 IPv6를 통해 Kubernetes API 서버에 연결할 때 TLS 호스트 이름 확인에 실패합니다.
Flink 연산자
IPv6 클러스터에서 Flink Operator 워크로드를 실행하려면 Flink Operator 포드와 FlinkDeployment 작업 포드 모두에서 다음 환경 변수를 설정해야 합니다.
KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true
이 해결 방법은 Spark 운영자 섹션에 설명된 것과 동일한 OkHttp 3.x IPv6 호스트 이름 확인 문제를 해결합니다. 자세한 내용은 Apache Flink Kubernetes Operator 설명서의 IPv6 구성을
Flink 연산자 포드에서 환경 변수 설정
에서 환경 변수를 설정합니다helm install.
helm installmy-flink-operatorchart\ --set operatorPod.env[0].name=KUBERNETES_DISABLE_HOSTNAME_VERIFICATION \ --set-string operatorPod.env[0].value=true
FlinkDeployment 작업 포드에서 환경 변수 설정
FlinkDeployment YAML의 포드 템플릿을 통해 환경 변수를 주입합니다.
spec: podTemplate: spec: containers: - name: flink-main-container env: - name: KUBERNETES_DISABLE_HOSTNAME_VERIFICATION value: "true"
Livy 연산자
IPv6 클러스터에서 Livy Operator 워크로드를 실행하려면 다음 두 가지를 구성해야 합니다.
-
듀얼 스택 로드 밸런서 주석 - AWS Load Balancer 컨트롤러가 듀얼 스택 Network Load Balancer 다음 주석을 추가합니다.
helm installmy-livychart\ --set "service.annotations.service\.beta\.kubernetes\.io/aws-load-balancer-ip-address-type=dualstack" -
Spark 드라이버 서비스 IPv6 구성 - Livy를 통해 Spark 작업을 제출할 때
spark.kubernetes.driver.service.ipFamilies구성을 포함합니다.{ "conf": { "spark.kubernetes.driver.service.ipFamilies": "IPv6" } }
지원되는 릴리스
다음 표에는 제출 모델 및 Amazon EMR 릴리스별 IPv6 지원이 나와 있습니다. emr-spark-8.x 릴리스는 Spark 전용 릴리스이며 Flink를 포함하지 않습니다.
| 제출 모델 | emr-7.14.0 및 이후 7.x 릴리스 |
emr-spark-8.0.0 |
emr-spark-8.1.0+ |
|---|---|---|---|
StartJobRun |
✅ 지원됨 |
✅ 지원됨 |
✅ 지원됨 |
Spark Connect 대화형 엔드포인트 |
✅ 지원됨 |
✅ 지원됨 |
✅ 지원됨 |
Amazon SageMaker Unified Studio |
✅ 지원됨 |
✅ 지원됨 |
✅ 지원됨 |
Spark 연산자 |
✅ 지원됨1, 2 |
❌ 지원되지 않음 |
✅ 지원됨2 |
Flink 연산자 |
✅ 지원1 |
해당 사항 없음 |
해당 사항 없음 |
Livy 연산자 |
✅ 지원됨2 |
✅ 지원됨2 |
✅ 지원됨2 |
1이 제출 모델의 이전 섹션에 설명된 KUBERNETES_DISABLE_HOSTNAME_VERIFICATION 해결 방법이 필요합니다.
2이 제출 모델의 이전 섹션에 설명된 추가 구성이 필요합니다.
문제 해결
다음은 IPv6 클러스터에서 Amazon EMR on EKS 워크로드를 실행할 때 발생할 수 있는 일반적인 오류입니다.
오류: []에 묶인 예상 호스트 이름 또는 IPv6 IP
java.lang.AssertionError: assertion failed: Expected hostname or IPv6 IP enclosed in [] but got 2600:1f14:31b1:d102:d812::2
원인: IPv6를 지원하지 않는 Amazon EMR 릴리스를 사용하고 있습니다. 이전 릴리스에는 필요한 IPv6 수정 사항이 포함되지 emr-7.14.0 않습니다.
해결 방법: emr-7.14.0 이상을 업그레이드합니다. 지원되는 릴리스의 전체 목록은 지원되는 릴리스 섹션을 참조하세요.
오류: SSLPeerUnverifiedException 호스트 이름이 확인되지 않음
javax.net.ssl.SSLPeerUnverifiedException: Hostname fd0f:f96c:1438::1 not verified
원인: Spark 또는 Flink 연산자 포드에 KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true 환경 변수가 설정되어 있지 않습니다. Kubernetes API 서버가 IPv6 주소를 사용하는 경우 OkHttp 3.x는 TLS 호스트 이름 확인에 실패합니다.
해결 방법: 연산자 포드KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true에 설정합니다. Spark 연산자 또는 Flink 연산자을 참조하세요.
오류:이 클러스터에 잘못된 값 "IPv4"가 구성되지 않음
Service "...-driver-svc" is invalid: spec.ipFamilies[0]: Invalid value: "IPv4": not configured on this cluster
원인: Spark 애플리케이션에는 spark.kubernetes.driver.service.ipFamilies=IPv6 구성이 포함되지 않습니다. 이 설정이 없으면 Spark는 IPv6 전용 클러스터가 거부하는 IPv4로 드라이버 서비스를 생성하려고 시도합니다. IPv6-only
해결 방법: "spark.kubernetes.driver.service.ipFamilies": "IPv6" sparkConf (Spark Operator용) 또는 Livy 배치 제출의 conf 객체에를 추가합니다. Spark 연산자 또는 Livy 연산자을 참조하세요.