View a markdown version of this page

Amazon EKS Hybrid Nodes 게이트웨이 작업 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.

Amazon EKS Hybrid Nodes 게이트웨이 작업

이 페이지에서는 고가용성, 장애 조치 동작, 모니터링, 규모 조정 및 VXLAN 터널 수명 주기를 포함하여 Amazon EKS Hybrid Nodes 게이트웨이에 대한 2일차 작업을 다룹니다. 설치 지침은 EKS Hybrid Nodes 게이트웨이 시작하기을 확인하세요.

고가용성 및 장애 조치

Hybrid Nodes 게이트웨이는 Kubernetes 리스 기반 리더 선택과 함께 활성-대기 모델을 사용합니다. 두 개의 게이트웨이 포드는 포드 비선호도에 의해 적용되는 별도의 EC2 노드에서 실행됩니다. 두 포드 모두 시작 시 VXLAN 인터페이스를 생성하고 모든 하이브리드 노드에 대해 VTEP 항목을 유지 관리하는 노드 조정기를 실행합니다. 리더 포드만 VPC 라우팅 테이블 및 CiliumVTEPConfig CRD를 관리합니다. 대기 포드에는 이미 터널 항목의 전체 세트가 있으므로 장애 조치 시 항상 3~5초 이내에 트래픽을 전달할 준비가 되어 있습니다.

장애 조치 시퀀스

활성 게이트웨이 인스턴스에서 장애가 발생하면 다음 시퀀스가 진행됩니다.

  1. 대기 포드는 리더 리스가 만료되었음을 감지합니다.

  2. 대기 포드는 리스를 획득하고 새로운 리더가 됩니다.

  3. 새 리더에서 리더 설정 시퀀스를 실행합니다.

    • 하이브리드 포드 CIDR이 새 리더의 프라이머리 ENI를 가리키도록 VPC 라우팅 테이블 항목을 업데이트합니다.

    • 새 리더의 노드 IP 및 VXLAN MAC 주소로 CiliumVTEPConfig 사용자 지정 리소스를 업서트합니다.

  4. 트래픽이 새 리더를 통한 흐름을 재개합니다.

두 포드 모두 항상 VXLAN 인터페이스와 VTEP 항목을 유지 관리하므로 새 리더는 장애 조치 중에 VXLAN 인터페이스를 다시 생성하거나 터널 항목을 다시 프로그래밍할 필요가 없습니다. VPC 라우팅 테이블 및 CiliumVTEPConfig 업데이트만 필요합니다.

예상 장애 조치 시간은 약 3~5초입니다. 장애 조치 중에 VPC와 하이브리드 포드 간 트래픽이 중단됩니다.

가용 영역 권장 사항

AZ 장애로 인해 리더와 대기가 모두 제거되지 않도록 두 가용 영역에 게이트웨이 노드를 분산합니다. EKS 자율 모드를 사용하는 경우 여러 AZ에서 서브넷 선택기를 사용하여 NodeClass를 구성합니다. 관리형 노드 그룹 또는 자체 관리형 노드의 경우 레이블을 지정할 때 다른 AZ의 노드를 선택합니다.

참고

게이트웨이와 VPC의 다른 리소스 간 교차 AZ 트래픽에는 표준 AWS 교차 AZ 데이터 전송 요금이 발생합니다.

리더 선정 파라미터

기본 리더 선정 파라미터는 빠른 장애 조치를 위해 조정됩니다.

파라미터 기본값 설명

--leader-election-lease-duration

3s

리더가 갱신을 중지한 후 리더 외 포드가 리스 획득을 시도하기 전에 대기하는 시간입니다.

--leader-election-renew-deadline

2s

리더가 포기하기 전에 리스를 갱신하려고 시도하는 시간입니다.

--leader-election-retry-period

1s

후보가 리스 획득을 재시도하는 빈도입니다.

이러한 값을 낮추면 장애 조치 시간이 줄어들지만 네트워크 파티션에서 잘못된 장애 조치의 위험이 증가합니다. 대부분의 배포에서 기본값이 적합합니다. 자세한 내용은 Amazon EKS Hybrid Nodes 게이트웨이 구성 참조 섹션을 참조하세요.

VPC 라우팅 테이블 관리

게이트웨이는 하이브리드 포드 CIDR로 향하는 트래픽이 활성 게이트웨이 인스턴스에 도달하도록 VPC 라우팅 테이블 항목을 관리합니다.

경로 관리 방법

게이트웨이 포드가 리더가 되면 구성된 각 VPC 라우팅 테이블에서 경로를 생성하거나 대체합니다. 각 경로는 대상 CIDR을 하이브리드 포드 CIDR로 설정하고 대상을 리더의 프라이머리 ENI로 설정합니다. 경로가 이미 존재하고 올바른 ENI를 가리키는 경우 게이트웨이는 업데이트를 건너뜁니다.

장애 조치 중에 새 리더가 자체 ENI를 가리키도록 기존 경로를 대체합니다. VPC 트래픽을 새 활성 게이트웨이로 리디렉션하는 메커니즘입니다.

라우팅 테이블 항목 예제

게이트웨이에서 경로를 구성한 후 VPC 라우팅 테이블에는 다음과 유사한 항목이 포함됩니다.

대상 주소 대상 Status

10.0.0.0/16

로컬

활성화

HYBRID_POD_CIDR

eni-LEADER_ENI_ID

활성화

IAM 권한

게이트웨이에서 라우팅 테이블을 관리하려면 다음 IAM 작업이 필요합니다.

  • ec2:DescribeRouteTables

  • ec2:CreateRoute

  • ec2:ReplaceRoute

  • ec2:DescribeInstances

게이트웨이 노드의 인스턴스 프로파일, Pod Identity 또는 IRSA 구성과 연결된 IAM 역할에 이러한 권한을 연결합니다.

모니터링

상태 및 준비 엔드포인트

게이트웨이는 포트 8088에서 상태 및 준비 엔드포인트를 노출합니다.

엔드포인트 경로 설명

상태 확인

/healthz

게이트웨이 프로세스가 정상일 때 HTTP 200을 반환합니다. Kubernetes 활성 상태 프로브에서 사용됩니다.

준비 확인

/readyz

게이트웨이에서 트래픽을 처리할 준비가 되면 HTTP 200을 반환합니다. Kubernetes 준비 상태 프로브에서 사용됩니다.

임시 디버그 컨테이너를 실행하거나 포트 전달을 통해서 진단을 위해 이러한 엔드포인트를 수동으로 쿼리할 수 있습니다.

kubectl port-forward -n eks-hybrid-nodes-gateway POD_NAME 8088:8088 & curl -s http://localhost:8088/healthz curl -s http://localhost:8088/readyz

지표 엔드포인트

게이트웨이는 /metrics 경로의 10080 포트에 Prometheus 호환 지표를 노출합니다. 표준 컨트롤러-런타임 지표 외에도 다음과 같은 사용자 지정 지표를 사용할 수 있습니다.

게이트웨이 정보:

지표 유형 설명

hybrid_gateway_info

Gauge

게이트웨이 인스턴스에 대한 정적 정보입니다. 항상 1입니다. 레이블: node_ip, node_name, vxlan_interface, vpc_cidr, pod_cidr.

하이브리드 노드:

지표 유형 설명

hybrid_gateway_hybrid_nodes_configured

Gauge

VTEP 항목이 구성된 하이브리드 노드의 현재 수입니다.

VTEP 작업:

지표 유형 설명

hybrid_gateway_vtep_add_total

Counter

성공한 총 VTEP 추가 작업 수입니다.

hybrid_gateway_vtep_add_errors_total

Counter

실패한 총 VTEP 추가 작업 수입니다.

hybrid_gateway_vtep_remove_total

Counter

성공한 총 VTEP 제거 작업 수입니다.

hybrid_gateway_vtep_remove_errors_total

Counter

실패한 총 VTEP 제거 작업 수입니다.

리더 선정 및 라우팅 테이블:

지표 유형 설명

hybrid_gateway_leader_is_active

Gauge

이 포드가 활성 리더인 경우 1, 대기인 경우 0입니다.

hybrid_gateway_leader_setup_duration_seconds

히스토그램(Histogram)

리더 설정 작업(라우팅 테이블 + CiliumVTEPConfig)의 기간(초)입니다.

hybrid_gateway_aws_route_table_update_total

Counter

성공한 총 AWS 라우팅 테이블 업데이트 작업 수입니다.

hybrid_gateway_aws_route_table_update_errors_total

Counter

실패한 총 AWS 라우팅 테이블 업데이트 작업 수입니다.

hybrid_gateway_aws_route_table_update_duration_seconds

히스토그램(Histogram)

AWS 라우팅 테이블 업데이트 작업 기간(초)입니다.

네트워크 통계(스크레이프당 온디맨드 방식으로 수집됨):

지표 유형 설명

hybrid_gateway_vxlan_rx_bytes_total

Gauge

VXLAN 인터페이스에서 수신된 총 바이트 수입니다.

hybrid_gateway_vxlan_tx_bytes_total

Gauge

VXLAN 인터페이스에서 전송된 총 바이트 수입니다.

hybrid_gateway_vxlan_rx_packets_total

Gauge

VXLAN 인터페이스에서 수신된 총 패킷 수입니다.

hybrid_gateway_vxlan_tx_packets_total

Gauge

VXLAN 인터페이스에서 전송된 총 패킷 수입니다.

hybrid_gateway_vxlan_rx_dropped_total

Gauge

VXLAN 인터페이스에서 수신될 때 삭제된 총 패킷 수입니다.

hybrid_gateway_vxlan_tx_dropped_total

Gauge

VXLAN 인터페이스에서 전송될 때 삭제된 총 패킷 수입니다.

hybrid_gateway_vxlan_rx_errors_total

Gauge

VXLAN 인터페이스에서 발생한 총 수신 오류 수입니다.

hybrid_gateway_vxlan_tx_errors_total

Gauge

VXLAN 인터페이스에서 발생한 총 전송 오류입니다.

hybrid_gateway_vxlan_interface_up

Gauge

VXLAN 인터페이스가 UP이면 1, 그렇지 않으면 0입니다.

hybrid_gateway_vxlan_fdb_entries

Gauge

VXLAN 인터페이스에서 현재 FDB 항목 수입니다.

hybrid_gateway_vxlan_route_count

Gauge

VXLAN 인터페이스를 통한 현재 경로 수입니다.

hybrid_gateway_primary_nic_rx_bytes_total

Gauge

프라이머리 네트워크 인터페이스에서 수신된 총 바이트 수입니다.

hybrid_gateway_primary_nic_tx_bytes_total

Gauge

프라이머리 네트워크 인터페이스에서 전송된 총 바이트 수입니다.

hybrid_gateway_primary_nic_rx_packets_total

Gauge

프라이머리 네트워크 인터페이스에서 수신된 총 패킷 수입니다.

hybrid_gateway_primary_nic_tx_packets_total

Gauge

프라이머리 네트워크 인터페이스에서 전송된 총 패킷 수입니다.

hybrid_gateway_primary_nic_rx_dropped_total

Gauge

프라이머리 NIC에서 수신될 때 삭제된 총 패킷 수입니다.

hybrid_gateway_primary_nic_tx_dropped_total

Gauge

프라이머리 NIC에서 전송될 때 삭제된 총 패킷 수입니다.

hybrid_gateway_primary_nic_rx_errors_total

Gauge

프라이머리 NIC에서 발생한 총 수신 오류 수입니다.

hybrid_gateway_primary_nic_tx_errors_total

Gauge

프라이머리 NIC에서 발생한 총 전송 오류입니다.

hybrid_gateway_primary_nic_info

Gauge

프라이머리 NIC 이름입니다. 항상 1입니다. 레이블: interface_name.

CloudWatch 관찰성 추가 기능

Amazon CloudWatch Observability 추가 기능을 사용하여 게이트웨이 지표 및 로그를 수집할 수 있습니다. 포트 10080에서 게이트웨이 네임스페이스(eks-hybrid-nodes-gateway)를 스크레이핑하도록 추가 기능을 구성합니다. 올바른 구성 형식은 위에 연결된 추가 기능 설명서를 참조하세요.

스케일 아웃 고려 사항

Hybrid Nodes 게이트웨이는 리더 선정과 함께 활성-대기 모델을 사용하므로 한 번에 하나의 포드만 트래픽을 처리합니다. 복제본 수 증가를 통한 게이트웨이의 수평적 스케일링은 장애 조치 중에 인수할 준비가 된 대기 포드를 추가로 제공함으로써 가용성이 향상될 수 있지만, 트래픽이 여러 복제본에 분산되지 않으므로 성능이나 처리량이 향상되지 않습니다. 성능을 조정하려면 트래픽 볼륨에 맞게 충분한 네트워크 대역폭이 있는 EC2 인스턴스 유형을 선택하여 수직적 스케일링을 수행합니다.

인스턴스 유형 지침

게이트웨이 처리량은 EC2 인스턴스 네트워크 성능에 따라 제한됩니다. 인스턴스 크기를 선택할 때 다음을 고려합니다.

  • 네트워크 대역폭 - 게이트웨이는 VPC 및 하이브리드 포드 사이에서 모든 트래픽을 전달합니다. 네트워크 대역폭이 피크 트래픽 요구 사항을 충족하는 인스턴스 유형을 선택합니다.

  • 초당 패킷 수(PPS) - VXLAN 캡슐화는 패킷당 오버헤드를 추가합니다. 작은 패킷이 많은 워크로드(예: 요청 속도가 빠른 마이크로서비스)의 경우 PPS 제한이 높은 인스턴스 유형이 더 적합합니다.

  • 하이브리드 노드 수 - 각 하이브리드 노드는 게이트웨이가 트래픽을 전달하는 VXLAN 터널 엔드포인트를 추가합니다. 하이브리드 노드 수가 늘면 게이트웨이를 통한 집계 트래픽이 증가합니다. 클러스터의 네트워크 간 피크 트래픽을 처리하기에 충분한 네트워크 대역폭을 보유한 인스턴스 유형을 선택합니다.

권장 인스턴스 유형

프로덕션(하이브리드 노드 10~100개, 중간 수준의 트래픽)

네트워크 간 트래픽이 안정적인 표준 프로덕션 워크로드에 적합합니다.

인스턴스 유형 vCPU Memory Network 참고

c6i.xlarge

4

8GiB

최대 1.25Gbps

비용과 성능 간 바람직한 균형

c6in.xlarge

4

8GiB

최대 30Gbps

네트워크에 최적화되었고, 프로덕션에 권장됨

c7i.xlarge

4

8GiB

최대 1.25Gbps

최신 세대 컴퓨팅 최적화

m6i.xlarge

4

16GiB

최대 1.25Gbps

게이트웨이 노드에서 다른 워크로드를 함께 배치하는 경우에 적합함

처리량이 높은 프로덕션(100개 이상의 하이브리드 노드, 많은 트래픽)

데이터 집약적인 워크로드 또는 많은 동시 연결과 같이 네트워크 간 대역폭 요구 사항이 중요한 환경의 경우.

인스턴스 유형 vCPU Memory Network 참고

c6in.2xlarge

8

16GiB

최대 40Gbps

처리량이 많은 프로덕션에 권장됨

c5n.2xlarge

8

21GiB

최대 25Gbps

이전 세대 네트워크에 최적화되었고, 비용 효율적임

c6in.4xlarge

16

32GiB

최대 50Gbps

매우 많은 워크로드의 최대 처리량

c5n.4xlarge

16

42GiB

최대 25Gbps

매우 빠른 패킷 속도를 위한 많은 vCPU 수

게이트웨이 지표(지표 엔드포인트 참조)를 사용하여 네트워크 사용률을 모니터링하고 필요에 따라 인스턴스 유형을 조정합니다.

VXLAN 터널 수명 주기

게이트웨이는 클러스터에 조인하거나 클러스터에서 나갈 때 하이브리드 노드에 대한 VXLAN 터널을 자동으로 유지 관리합니다.

터널 관리 방법

노드 컨트롤러는 클러스터에서 CiliumNode 객체를 감시합니다. 컨트롤러는 리더뿐만 아니라 모든 게이트웨이 포드에서 실행되므로 리더와 대기 포드 모두의 터널 상태는 최신입니다. CiliumNode 이벤트가 발생하면 컨트롤러는 eks.amazonaws.com/compute-type: hybrid 레이블을 찾아 노드가 하이브리드 노드인지 확인합니다.

하이브리드 노드가 클러스터에 조인하는 경우:

  1. 컨트롤러에서 새 CiliumNode 객체를 감지합니다.

  2. CiliumNode 사양에서 노드의 내부 IP 주소 및 포드 CIDR을 추출합니다.

  3. VXLAN 인터페이스에서 다음을 프로그래밍합니다.

    • VXLAN 인터페이스를 통해 노드의 IP를 사용하는 노드의 포드 CIDR에 대한 경로.

    • 노드의 IP를 결정적 MAC 주소에 매핑하는 정적 ARP 항목.

    • 캡슐화된 패킷을 노드의 IP로 보내도록 VXLAN 모듈에 지시하는 FDB 항목.

하이브리드 노드가 클러스터에서 나가는 경우:

  1. 컨트롤러에서 CiliumNode 삭제를 감지합니다.

  2. VXLAN 인터페이스에서 해당 노드에 대한 경로, ARP 항목 및 FDB 항목을 제거합니다.

이 수명 주기는 완전히 자동입니다. 하이브리드 노드를 추가하거나 제거할 때 터널을 수동으로 구성하지 않아도 됩니다.

다음 단계