Amazon EKS에서 로드 밸런서가 지원하는 Kubernetes 서비스를 생성할 때 발생하는 문제를 해결하려면 어떻게 해야 하나요?

5분 분량
0

Amazon Elastic Kubernetes Service(Amazon EKS)에서 로드 밸런서가 지원하는 Kubernetes 서비스를 생성할 수 없습니다.

간략한 설명

서비스 로드 밸런서 문제를 해결하려면 다음 구성이 있는지 확인합니다.

  • Amazon Virtual Private Cloud(Amazon VPC) 서브넷에 대한 올바른 태그
  • 클러스터의 IAM 역할에 필요한 AWS Identity and Access Management(IAM) 권한
  • 유효한 Kubernetes 서비스 정의
  • 계정 한도 내에 유지되는 로드 밸런서
  • 서브넷에 사용 가능한 IP 주소
  • 연결 제한 시간 초과 문제를 방지하도록 올바르게 구성된 로드 밸런서
  • 정상 로드 밸런서 대상

위의 모든 항목을 확인한 후에도 문제가 계속 발생하면 추가 문제 해결 단계 시도 섹션의 단계를 따르세요.

해결 방법

참고:

Amazon VPC 서브넷에 대한 올바른 태그 사용

1.    Amazon VPC 콘솔을 엽니다.

2.    탐색 창에서 [Subnets(서브넷)]을 선택합니다.

3.    각 서브넷에 대한 [태그(Tags)] 탭을 선택한 다음 태그가 있는지 확인합니다. 예를 들면 다음과 같습니다.

Key: kubernetes.io/cluster/yourEKSClusterName
Value: shared

4.    퍼블릭 서브넷의 경우 다음 태그가 있는지 확인합니다.

Key: kubernetes.io/role/elb
Value: 1

참고: 서브넷이 퍼블릭인지 확인하려면 해당 서브넷과 연결된 라우팅 테이블을 확인합니다. 퍼블릭 서브넷에는 인터넷 게이트웨이 igw-xxxxxxxxx에 대한 경로가 있습니다. 프라이빗 서브넷에는 NAT 게이트웨이 또는 NAT 인스턴스를 통해 인터넷에 연결되는 경로가 있거나 인터넷에 대한 경로가 전혀 없습니다.

중요: 인터넷 연결 로드 밸런서 서비스를 생성하려면 4단계에서 태그가 있어야 합니다. 인터넷 연결 로드 밸런서는 인터넷을 통해 클라이언트에서 대상으로 요청을 라우팅합니다.

5.    프라이빗 서브넷의 경우 다음 태그가 있는지 확인합니다.

Key: kubernetes.io/role/internal-elb
Value: 1

중요: 내부 로드 밸런서 서비스를 생성하려면 5단계에서 태그가 있어야 합니다. 내부 로드 밸런서는 프라이빗 IP 주소를 사용하여 요청을 대상으로 라우팅합니다.

클러스터의 IAM 역할에 필요한 IAM 권한 설정

1.    Amazon EKS 콘솔을 엽니다.

2.    탐색 창에서 [Clusters(클러스터)]를 선택합니다.

3.    클러스터를 선택한 후 **Cluster IAM Role ARN(클러스터 IAM 역할 ARN)**을 적어 둡니다.

4.    IAM 콘솔을 엽니다.

5.    탐색 창에서 [Roles(역할)]을 선택합니다.

6.    3단계에서 식별한 Cluster IAM Role ARN(클러스터 IAM 역할 ARN)과 일치하는 역할을 선택합니다.

7.    AWS 관리형 정책 AmazonEKSClusterPolicy가 역할에 연결되어 있는지 확인합니다.

참고: Amazon EKS 제어 플레인은 위의 IAM 역할을 맡아 서비스에 대한 로드 밸런서를 생성합니다.

유효한 Kubernetes 서비스 정의 사용

1.    Kubernetes 서비스의 YAML 파일에서 spec.typeLoadBalancer로 설정되어 있는지 확인합니다.

다음은 로드 밸런서에서 지원하는 Kubernetes 서비스의 예입니다.

apiVersion: v1
kind: Service
metadata:
  annotations:
    # This annotation is only required if you are creating an internal facing ELB. Remove this annotation to create public facing ELB.
    service.beta.kubernetes.io/aws-load-balancer-internal: "true"
  name: nginx-elb
  labels:
    app: nginx
spec:
  type: LoadBalancer
  ports:
  - name: "http"
    port: 80
    targetPort: 80
  selector:
    app: nginx

참고: 다른 주석으로 서비스를 사용자 지정하려면 Kubernetes 웹사이트에서 AWS의 내부 로드 밸런서TLS 지원을 참조하세요. AWS 로드 밸런서 컨트롤러를 사용하여 Network Load Balancer를 관리하는 경우, 주석이 Kubernetes 서비스에 대한 정의를 충족해야 합니다. 자세한 내용은 Amazon EKS의 네트워크 로드 밸런싱을 참조하세요.

로드 밸런서가 계정 한도 내에 있는지 확인합니다.

AWS 계정에는 기본적으로 AWS 리전당 최대 20개의 로드 밸런서가 있습니다.

사용 중인 로드 밸런서의 수를 확인하려면 Amazon Elastic Compute Cloud(Amazon EC2) 콘솔을 엽니다. 그런 다음 탐색 창에서 Load Balancers(로드 밸런서)를 선택합니다.

최대 로드 밸런서 수에 도달한 경우 Service Quotas를 사용하여 증가를 신청할 수 있습니다.

서브넷에 사용 가능한 IP 주소가 충분한지 확인

로드 밸런서를 생성하려면 해당 로드 밸런서의 각 서브넷에 최소 8개의 사용 가능한 IP 주소가 있어야 합니다. Classic Load Balancer와 Network Load Balancer에 모두 필요합니다.

연결 제한 시간 초과 문제

로드 밸런서에서 간헐적이거나 지속적인 시간 초과 문제가 발생하는 경우 로드 밸런서 구성에 문제가 있을 수 있습니다. 이는 백엔드 서비스가 들어오는 트래픽을 처리할 수 없거나 로드 밸런서로 너무 많은 요청이 전송될 때 발생할 수 있습니다. 자세한 내용은 Elastic Load Balancing ‘Connection timed out’ 오류를 해결하려면 어떻게 해야 하나요?를 참조하세요.

로드 밸런서 상태 확인 점검

엔드포인트를 올바르게 구성하지 않거나 백엔드 서비스가 상태 확인 요청에 응답하지 않는 경우 로드 밸런서 상태 확인 문제가 발생합니다.

로드 밸런서가 올바른 엔드포인트를 가리키고 있는지 확인하려면 다음과 비슷한 AWS CLI 명령 describe-target-health를 실행합니다.

aws elbv2 describe-target-health --target-group-arn arn:aws:elasticloadbalancing:us-west-2:1234567890:targetgroup/my-targets/6d0ecf831eec9f09

대상 그룹의 상태 확인 구성을 확인하려면 AWS CLI 명령 describe-target-groups를 실행합니다.

aws elbv2 describe-target-groups --target-group-arns arn:aws:elasticloadbalancing:us-west-2:1234567890:targetgroup/my-targets/6d0ecf831eec9f09

자세한 내용은 대상 그룹에 대한 상태 확인을 참조하세요.

추가 문제 해결 단계 시도

Kubernetes 서비스에서 문제 해결에 도움이 되는 오류 메시지를 확인하려면 다음 describe-service 명령을 실행합니다.

$ kubectl describe service my-elb-service

서비스가 성공적으로 생성되면 다음과 유사한 내용이 출력됩니다.

...
...
Events:
  Type    Reason                Age   From                Message
  ----    ------                ----  ----                -------
  Normal  EnsuringLoadBalancer  47s   service-controller  Ensuring load balancer
  Normal  EnsuredLoadBalancer   44s   service-controller  Ensured load balancer

서비스가 성공적으로 생성되지 않으면 오류 메시지가 표시됩니다.

오류 메시지에 대한 자세한 내용을 보려면 다음 리소스를 확인하세요.


관련 정보

VPC의 로드 밸런서에 사용되는 서브넷에 IP 주소가 부족한 이유는 무엇인가요?

Amazon EKS 문제 해결

Application Load Balancer 문제 해결

Classic Load Balancer 문제 해결

AWS 공식
AWS 공식업데이트됨 한 달 전
댓글 없음

관련 콘텐츠