본문으로 건너뛰기

ALB Controller

이 실습에서는 Amazon EKS 작업 시 발생할 수 있는 일반적인 문제들을 살펴보고 효과적인 트러블슈팅 기술을 배웁니다. AWS Load Balancer Controller 및 서비스 연결 문제에 중점을 두고 실제 시나리오를 다룰 것입니다. Load Balancer Controller의 작동 방식에 대해 더 자세히 알고 싶다면 Fundamentals 모듈 또는 AWS LB Controller 공식 문서를 참조하세요.

시작하기 전에

이 섹션을 위한 환경을 준비합니다:

~$prepare-environment troubleshooting/alb

이러한 변경 사항을 적용하는 Terraform은 여기에서 확인할 수 있습니다.

정보

실습 준비에는 몇 분이 소요될 수 있으며 실습 환경에 다음과 같은 변경 사항을 적용합니다:

  • 샘플 UI 애플리케이션 배포
  • Ingress 리소스 구성
  • 초기 AWS Load Balancer Controller 구성 설정 (트러블슈팅을 위한 의도적인 문제 포함)
  • 필요한 IAM 역할 및 정책 생성

환경 설정 세부 사항

prepare-environment 스크립트는 트러블슈팅을 위한 특정 문제들과 함께 여러 리소스를 생성했습니다:

  • ui 네임스페이스의 UI 애플리케이션 배포
  • AWS Load Balancer Controller를 사용하도록 구성된 Ingress 리소스
  • IAM 역할 및 정책 (의도적인 잘못된 구성 포함)
  • Kubernetes 서비스 리소스

이러한 컴포넌트들은 이 모듈 전반에 걸쳐 식별하고 수정할 일반적인 실제 문제들로 구성되어 있습니다.

다룰 내용

다음과 같은 여러 문제를 트러블슈팅합니다:

  • ALB 생성을 방해하는 누락되거나 잘못된 서브넷 태그
  • Load Balancer Controller를 차단하는 IAM 권한 문제
  • 서비스 셀렉터 잘못된 구성
  • Ingress 백엔드 서비스 문제

사전 요구 사항

진행하기 전에 다음을 확인하세요:

  • EKS 클러스터에 대한 액세스
  • 적절한 AWS CLI 구성
  • kubectl이 설치되고 구성됨
  • Kubernetes 네트워킹 개념에 대한 기본 이해

사용할 도구

이 모듈 전반에 걸쳐 다음 트러블슈팅 도구를 사용합니다:

  • Kubernetes 리소스 검사를 위한 kubectl 명령
  • AWS 리소스 상태 확인을 위한 AWS CLI
  • Controller 진단을 위한 CloudWatch Logs
  • 권한 검증을 위한 AWS IAM 도구
계속하기 전에

prepare-environment 스크립트를 실행한 후 몇 분 후, 서비스와 Ingress가 정상적으로 실행 중인지 확인하세요.

~$kubectl get svc -n ui
NAME   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
ui     ClusterIP   172.20.224.112   <none>        80/TCP    12d
~$kubectl get ingress -n ui
NAME   CLASS   HOSTS   ADDRESS   PORTS   AGE
ui     alb     *                 80      11m
 

로드 밸런서가 실제로 생성되지 않았는지 확인해 봅시다:

~$aws elbv2 describe-load-balancers --query 'LoadBalancers[?contains(LoadBalancerName, `k8s-ui-ui`) == `true`]'
[]

Application Load Balancer가 생성되지 않는 이유를 조사해 봅시다!