

 **이 페이지 개선에 도움 주기** 

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

# Amazon EKS Hybrid Nodes 게이트웨이 작업
<a name="hybrid-nodes-gateway-operations"></a>

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

## 고가용성 및 장애 조치
<a name="hybrid-nodes-gateway-ha"></a>

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

### 장애 조치 시퀀스
<a name="hybrid-nodes-gateway-failover-sequence"></a>

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

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

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

1. 새 리더에서 리더 설정 시퀀스를 실행합니다.
   + 하이브리드 포드 CIDR이 새 리더의 프라이머리 ENI를 가리키도록 VPC 라우팅 테이블 항목을 업데이트합니다.
   + 새 리더의 노드 IP 및 VXLAN MAC 주소로 `CiliumVTEPConfig` 사용자 지정 리소스를 업서트합니다.

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

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

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

### 가용 영역 권장 사항
<a name="hybrid-nodes-gateway-az-recommendation"></a>

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

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

### 리더 선정 파라미터
<a name="hybrid-nodes-gateway-leader-params"></a>

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


| 파라미터 | 기본값 | 설명 | 
| --- | --- | --- | 
|  `--leader-election-lease-duration`  |  `3s`  | 리더가 갱신을 중지한 후 리더 외 포드가 리스 획득을 시도하기 전에 대기하는 시간입니다. | 
|  `--leader-election-renew-deadline`  |  `2s`  | 리더가 포기하기 전에 리스를 갱신하려고 시도하는 시간입니다. | 
|  `--leader-election-retry-period`  |  `1s`  | 후보가 리스 획득을 재시도하는 빈도입니다. | 

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

## VPC 라우팅 테이블 관리
<a name="hybrid-nodes-gateway-route-table-mgmt"></a>

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

### 경로 관리 방법
<a name="hybrid-nodes-gateway-route-how"></a>

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

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

### 라우팅 테이블 항목 예제
<a name="hybrid-nodes-gateway-route-example"></a>

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


| 대상 주소 | 대상 | Status | 
| --- | --- | --- | 
|  `10.0.0.0/16`  | 로컬 | 활성화 | 
|  {{HYBRID\_POD\_CIDR}}  |  {{eni-LEADER\_ENI\_ID}}  | 활성화 | 

### IAM 권한
<a name="hybrid-nodes-gateway-route-iam"></a>

게이트웨이에서 라우팅 테이블을 관리하려면 다음 IAM 작업이 필요합니다.
+  `ec2:DescribeRouteTables` 
+  `ec2:CreateRoute` 
+  `ec2:ReplaceRoute` 
+  `ec2:DescribeInstances` 

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

## 모니터링
<a name="hybrid-nodes-gateway-monitoring"></a>

### 상태 및 준비 엔드포인트
<a name="hybrid-nodes-gateway-health-endpoints"></a>

게이트웨이는 포트 `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
```

### 지표 엔드포인트
<a name="hybrid-nodes-gateway-metrics"></a>

게이트웨이는 `/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 관찰성 추가 기능
<a name="hybrid-nodes-gateway-cloudwatch"></a>

[Amazon CloudWatch Observability 추가 기능](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-setup-EKS-addon.html)을 사용하여 게이트웨이 지표 및 로그를 수집할 수 있습니다. 포트 `10080`에서 게이트웨이 네임스페이스(`eks-hybrid-nodes-gateway`)를 스크레이핑하도록 추가 기능을 구성합니다. 올바른 구성 형식은 위에 연결된 추가 기능 설명서를 참조하세요.

## 스케일 아웃 고려 사항
<a name="hybrid-nodes-gateway-scaling"></a>

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

### 인스턴스 유형 지침
<a name="hybrid-nodes-gateway-instance-guidance"></a>

게이트웨이 처리량은 EC2 인스턴스 네트워크 성능에 따라 제한됩니다. 인스턴스 크기를 선택할 때 다음을 고려합니다.
+  **네트워크 대역폭** - 게이트웨이는 VPC 및 하이브리드 포드 사이에서 모든 트래픽을 전달합니다. 네트워크 대역폭이 피크 트래픽 요구 사항을 충족하는 인스턴스 유형을 선택합니다.
+  **초당 패킷 수(PPS)** - VXLAN 캡슐화는 패킷당 오버헤드를 추가합니다. 작은 패킷이 많은 워크로드(예: 요청 속도가 빠른 마이크로서비스)의 경우 PPS 제한이 높은 인스턴스 유형이 더 적합합니다.
+  **하이브리드 노드 수** - 각 하이브리드 노드는 게이트웨이가 트래픽을 전달하는 VXLAN 터널 엔드포인트를 추가합니다. 하이브리드 노드 수가 늘면 게이트웨이를 통한 집계 트래픽이 증가합니다. 클러스터의 네트워크 간 피크 트래픽을 처리하기에 충분한 네트워크 대역폭을 보유한 인스턴스 유형을 선택합니다.

### 권장 인스턴스 유형
<a name="hybrid-nodes-gateway-instance-recommendations"></a>

 **프로덕션(하이브리드 노드 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 수 | 

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

## VXLAN 터널 수명 주기
<a name="hybrid-nodes-gateway-vxlan-lifecycle"></a>

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

### 터널 관리 방법
<a name="hybrid-nodes-gateway-tunnel-mgmt"></a>

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

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

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

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

1. VXLAN 인터페이스에서 다음을 프로그래밍합니다.
   + VXLAN 인터페이스를 통해 노드의 IP를 사용하는 노드의 포드 CIDR에 대한 경로.
   + 노드의 IP를 결정적 MAC 주소에 매핑하는 정적 ARP 항목.
   + 캡슐화된 패킷을 노드의 IP로 보내도록 VXLAN 모듈에 지시하는 FDB 항목.

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

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

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

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

## 다음 단계
<a name="hybrid-nodes-gateway-operations-next"></a>
+  [Amazon EKS Hybrid Nodes 게이트웨이 구성 참조](hybrid-nodes-gateway-configuration.md) - 헬름 값, CLI 플래그 및 리더 선정 파라미터를 사용자 지정합니다.
+  [Amazon EKS Hybrid Nodes 게이트웨이 문제 해결](hybrid-nodes-gateway-troubleshooting.md) - 일반적인 문제를 진단하고 해결합니다.
+  [Amazon EKS Hybrid Nodes 게이트웨이](hybrid-nodes-gateway-overview.md) - 개요 페이지로 돌아갑니다.