본문 바로가기
CLOUD/AWS

EKS에서 ALB 상태검사와 target-type: ip 이슈 정리EKS에서 ALB

by Rainbound-IT 2025. 7. 30.
반응형

 문제 제기: ALB 상태검사 실패

EKS에서 Auto Scaling을 하다 보면 다음과 같은 문제가 발생할 수 있다:

  • 스케일 인 시: 상태검사를 담당하던 Pod가 사라져서 ALB Target Group에서 Unhealthy 발생
  • 스케일 아웃 시: 새 노드에는 상태검사 경로를 처리할 Pod가 없어 역시 Unhealthy 처리

 해결 방안 정리

1. readinessProbe + preStop으로 graceful termination 처리

Pod가 종료되기 전에 ALB가 트래픽을 멈추게 하려면:

 
lifecycle:
  preStop:
    exec:
      command: ["/bin/sh", "-c", "sleep 10"]

readinessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 3
  periodSeconds: 5

종료 전에 sleep 등을 사용해 ALB가 Unhealthy로 인식하고 타겟에서 제거할 시간을 벌어줌.


2. 상태검사용 Dummy Pod를 모든 노드에 배포

ALB 상태검사는 /healthz 같은 단순 경로만 검사하므로, 이를 처리하는 경량화된 Pod를 DaemonSet 등으로 모든 노드에 배포하면 문제 예방 가능:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: health-check-daemon
spec:
  template:
    spec:
      containers:
        - name: healthz
          image: hashicorp/http-echo
          args: ["-text=ok"]

3. ALB Ingress에서 target-type: ip 사용

annotations:
  alb.ingress.kubernetes.io/target-type: ip
  • ALB가 Kubernetes 노드가 아닌 Pod의 IP를 직접 타겟으로 등록
  • ClusterIP, NodePort 같은 Kubernetes Service를 우회함

Pod가 VPC 내부 IP를 갖고 있어야 하므로, aws-vpc-cni 플러그인을 사용하는 EKS에서만 유효


 실무에서 생기는 오해 및 문제

Pod가 직접 ENI를 갖는 것처럼 보이지만...

  • 대부분의 경우, Pod는 노드의 ENI에서 할당된 secondary IP를 사용
  • Pod에 직접 ENI를 붙이는 경우는 보안 격리나 특수 목적에서만 사용됨
  • 예외적으로 아래처럼 설정하면 Pod에 ENI가 붙기도 함:
metadata:
  annotations:
    vpc.amazonaws.com/pod-eni: "true"

 target-type: ip는 편하지만 위험요소도 많음

항목위험 요소
Service selector 무시 kubectl get svc로 상태를 확인해도 의미 없음
Pod IP 변동 재시작 시 IP 바뀌면 ALB 등록 갱신 전까지 트래픽 실패 가능성
ENI 할당 제한 Pod 수 늘어나면 서브넷 IP 부족/ENI 부족 문제 발생 가능
NetworkPolicy 통제 어려움 Pod가 VPC 사설 IP를 직접 가지므로 제어 복잡해짐
 

 핵심 요약


 

항목 정리
ALB 상태검사 실패 방지 readinessProbe + preStop + Dummy health pod 사용
target-type: ip 특징 ALB가 Pod IP로 직접 트래픽 전달 (Service 우회)
Pod ENI 일반적으로는 없음. Pod는 노드 ENI에서 IP 할당
실무 권장 DaemonSet + SpreadConstraints + readinessProbe 조합
 

 마무리

ALB와 EKS의 연동은 단순해보이지만, 상태검사와 트래픽 전달 경로에 대해 깊이 이해하고 있어야 운영 중 문제를 미리 방지할 수 있습니다. 특히 target-type: ip와 같이 Kubernetes Service를 우회하는 구조는 그에 맞는 관찰 및 제어 전략이 필요합니다.

반응형

댓글