높은 DNS 트래픽을 위해 CoreDNSPods 규모 조정 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 설명서에 기여하고 싶으신가요? 이 페이지 하단으로 스크롤하여 GitHub에서 이 페이지 편집을 선택하세요. 여러분의 기여는 모두를 위한 더 나은 사용자 설명서를 만드는 데 도움이 됩니다.

높은 DNS 트래픽을 위해 CoreDNSPods 규모 조정

하나 이상의 노드가 있는 Amazon EKS 클러스터를 시작하면 클러스터에 배포된 노드 수에 관계없이 기본적으로 CoreDNS 이미지의 복제본 2개 Deployment가 기본적으로 배포됩니다. CoreDNS 포드는 클러스터의 모든 포드에 대한 이름 확인을 제공합니다. 애플리케이션은 이름 확인을 사용하여 클러스터의 포드와 서비스에 연결하고 클러스터 외부의 서비스에도 연결합니다. 포드의 이름 확인(쿼리) 요청 수가 증가하면 CoreDNS 포드가 압도되어 속도가 느려지고 포드가 처리할 수 없는 요청을 거부할 수 있습니다.

CoreDNS 포드의 증가된 로드를 처리하려면 CoreDNS용 Auto Scaling 시스템을 고려하세요. Amazon EKS는 CoreDNS의 EKS 추가 기능 버전에서 CoreDNS 배포의 Auto Scaling을 관리할 수 있습니다. 이 CoreDNS 오토스케일러는 노드 수와 CPU 코어 수를 포함하여 클러스터 상태를 지속적으로 모니터링합니다. 해당 정보를 기반으로 컨트롤러는 EKS 클러스터에서 CoreDNS 배포의 복제본 수를 동적으로 조정합니다. 이 기능은 CoreDNS v1.9 및 EKS 릴리스 버전 1.25 이상에서 작동합니다. CoreDNS Auto Scaling과 호환되는 버전에 대한 자세한 내용은 다음 섹션을 참조하세요.

전반적인 애플리케이션 가용성과 클러스터 확장성을 향상하려면 이 기능을 다른 EKS 클러스터 Auto Scaling 모범 사례와 함께 사용하는 것이 좋습니다.

사전 조건

Amazon EKS가 CoreDNS 배포 규모를 조정하기 위한 세 가지 사전 조건이 있습니다.

  • CoreDNS의 EKS 추가 기능 버전을 사용해야 합니다.

  • 클러스터가 최소 클러스터 버전과 플랫폼 버전을 실행해야 합니다.

  • 클러스터가 최소 버전의 CoreDNS EKS 추가 기능을 실행해야 합니다.

최소 클러스터 버전

CoreDNS의 Auto Scaling은 Amazon EKS에서 관리하는 클러스터 컨트롤 플레인의 새로운 구성 요소에 의해 수행됩니다. 따라서 새 구성 요소가 있는 최소 플랫폼 버전을 지원하는 EKS 릴리스로 클러스터를 업그레이드해야 합니다.

새 Amazon EKS 클러스터. 배포하려면 Amazon EKS 시작하기 부분을 참조하세요. 클러스터는 Kubernetes 버전 1.25 이상이어야 합니다. 클러스터는 다음 표에 나열된 Kubernetes 버전과 플랫폼 버전 중 하나 또는 이후 버전를 실행해야 합니다. 나열된 것보다 이후의 모든 Kubernetes 및 플랫폼 버전도 지원됩니다. 다음 명령에서 my-cluster를 본인의 클러스터 이름으로 바꾼 다음 수정된 명령을 실행하여 현재 Kubernetes 버전을 확인할 수 있습니다.

aws eks describe-cluster --name my-cluster --query cluster.version --output text
Kubernetes 버전 플랫폼 버전

1.29.3

eks.7

1.28.8

eks.13

1.27.12

eks.17

1.26.15

eks.18

1.25.16

eks.19

참고

이후 Kubernetes 버전의 모든 플랫폼 버전도 지원됩니다(예: eks.1의 Kubernetes 버전 1.30 등).

최소 EKS 추가 기능 버전

Kubernetes 버전 1.29 1.28 1.27 1.26 1.25
v1.11.1-eksbuild.9 v1.10.1-eksbuild.11 v1.10.1-eksbuild.11 v1.9.3-eksbuild.15 v1.9.3-eksbuild.15
  1. 클러스터가 최소 클러스터 버전 이상인지 확인합니다.

    Amazon EKS는 동일한 Kubernetes 버전의 플랫폼 버전 간에 클러스터를 자동으로 업그레이드하며, 이 프로세스는 사용자가 직접 시작할 수 없습니다. 대신 클러스터를 다음 Kubernetes 버전으로 업그레이드하면 클러스터가 해당 K8s 버전과 최신 플랫폼 버전으로 업그레이드됩니다. 예를 들어 1.25에서 1.26으로 업그레이드하면 클러스터는 1.26.15 eks.18로 업그레이드됩니다.

    새로운 Kubernetes 버전에는 때로는 큰 변화가 도입되기도 합니다. 따라서 프로덕션 클러스터를 업데이트하기 전에 새 Kubernetes 버전의 별도 클러스터를 사용하여 애플리케이션의 동작을 테스트하는 것이 좋습니다.

    클러스터를 새 Kubernetes 버전으로 업그레이드하려면 기존 클러스터를 새 Kubernetes 버전으로 업데이트의 절차를 따릅니다.

  2. 자체 관리형 CoreDNS 배포가 아닌 CoreDNS용 EKS 추가 기능이 있는지 확인합니다.

    클러스터를 생성하는 데 사용한 도구에 따라 현재 클러스터에 Amazon EKS 추가 기능이 유형이 설치되어 있지 않을 수 있습니다. 클러스터에 설치된 추가 기능의 유형을 확인하려면 다음 명령을 실행합니다. my-cluster를 클러스터 이름으로 바꿉니다.

    aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query addon.addonVersion --output text

    버전 번호가 반환되면 클러스터에 Amazon EKS 유형의 추가 기능이 설치되어 있으며 다음 단계를 계속할 수 있습니다. 오류가 번호가 반환되는 경우 Amazon EKS 유형의 추가 기능이 클러스터에 설치되지 않습니다. 자체 관리형 버전을 Amazon EKS 추가 기능으로 바꾸려면 CoreDNS Amazon EKS 추가 기능 생성 절차의 나머지 단계를 완료합니다.

  3. CoreDNS용 EKS 추가 기능이 최소 EKS 추가 기능 버전과 같거나 그보다 높은 버전인지 확인합니다.

    클러스터에 설치된 추가 기능의 버전을 확인하세요. AWS Management Console에서 확인하거나 다음 명령을 실행할 수 있습니다.

    kubectl describe deployment coredns --namespace kube-system | grep coredns: | cut -d : -f 3

    예제 출력은 다음과 같습니다.

    v1.10.1-eksbuild.13

    이 버전을 이전 섹션의 최소 EKS 추가 기능의 버전과 비교합니다. 필요한 경우 CoreDNS Amazon EKS 추가 기능 업데이트 절차에 따라 EKS 추가 기능을 더 높은 버전으로 업그레이드합니다.

  4. EKS 추가 기능의 선택적 구성 설정에 Auto Scaling 구성을 추가합니다.

    1. https://console.aws.amazon.com/eks/home#/clusters에서 Amazon EKS 콘솔을 엽니다.

    2. 왼쪽 탐색 창에서 Clusters(클러스터)를 선택한 다음에 추가 기능을 구성할 클러스터의 이름을 선택합니다.

    3. 추가 기능(Add-ons) 탭을 선택합니다.

    4. CoreDNS 추가 기능 상자의 오른쪽 상단에 있는 상자를 선택하고 편집을 선택합니다.

    5. CoreDNS 구성 페이지에서

      1. 사용할 Version(버전)을 선택합니다. 이전 단계와 동일한 버전을 유지하고 별도의 작업으로 버전과 구성을 업데이트하는 것이 좋습니다.

      2. 선택적 구성 설정을 확장합니다.

      3. 구성 값에 중첩 JSON 객체의 JSON 키 "autoscaling": 및 값과 키 "enabled": 및 값 true를 입력합니다. 결과 텍스트는 유효한 JSON 객체여야 합니다. 이 키와 값이 텍스트 상자의 유일한 데이터인 경우 키와 값을 중괄호({})로 둘러쌉니다. 다음 예제에서는 Auto Scaling이 활성화되었음을 보여줍니다.

        { "autoScaling": { "enabled": true } }
      4. (선택 사항) Auto Scaling을 통해 CoreDNS 포드 수를 조정할 수 있는 최솟값과 최댓값을 제공할 수 있습니다.

        다음 예제에서는 Auto Scaling이 활성화되어 있고 모든 선택적 키에 값이 있습니다. 클러스터의 DNS 서비스에 대한 복원력을 제공하려면 최소 CoreDNS 포드 수를 항상 2개 이상으로 설정하는 것이 좋습니다.

        { "autoScaling": { "enabled": true, "minReplicas": 2, "maxReplicas": 10 } }
    6. CoreDNS 포드를 바꿔서 새 구성을 적용하려면 변경 사항 저장을 선택합니다.

      Amazon EKS는 CoreDNS용 Kubernetes 배포의 롤아웃을 사용하여 EKS 추가 기능에 변경 사항을 적용합니다. AWS Management Console의 추가 기능 업데이트 기록kubectl rollout status deployment/coredns --namespace kube-system을 사용하여 롤아웃 상태를 추적할 수 있습니다.

      kubectl rollout에는 다음 명령이 있습니다.

      $ kubectl rollout history -- View rollout history pause -- Mark the provided resource as paused restart -- Restart a resource resume -- Resume a paused resource status -- Show the status of the rollout undo -- Undo a previous rollout

      롤아웃이 너무 오래 걸리면 Amazon EKS가 롤아웃을 취소하고 유형이 추가 기능 업데이트이고 상태가 실패인 메시지가 추가 기능의 업데이트 기록에 추가됩니다. 문제를 조사하려면 롤아웃 기록부터 시작하고 CoreDNS 포드에서 kubectl logs를 실행하여 CoreDNS의 로그를 확인합니다.

  5. 업데이트 기록의 새 항목 상태가 성공이면 롤아웃이 완료되었으며 추가 기능이 모든 CoreDNS 포드에서 새 구성을 사용하고 있는 것입니다. 클러스터에 있는 노드 수와 노드의 CPU 코어를 변경하면 Amazon EKS가 CoreDNS 배포의 복제본 수를 확장합니다.

  1. 클러스터가 최소 클러스터 버전 이상인지 확인합니다.

    Amazon EKS는 동일한 Kubernetes 버전의 플랫폼 버전 간에 클러스터를 자동으로 업그레이드하며, 이 프로세스는 사용자가 직접 시작할 수 없습니다. 대신 클러스터를 다음 Kubernetes 버전으로 업그레이드하면 클러스터가 해당 K8s 버전과 최신 플랫폼 버전으로 업그레이드됩니다. 예를 들어 1.25에서 1.26으로 업그레이드하면 클러스터는 1.26.15 eks.18로 업그레이드됩니다.

    새로운 Kubernetes 버전에는 때로는 큰 변화가 도입되기도 합니다. 따라서 프로덕션 클러스터를 업데이트하기 전에 새 Kubernetes 버전의 별도 클러스터를 사용하여 애플리케이션의 동작을 테스트하는 것이 좋습니다.

    클러스터를 새 Kubernetes 버전으로 업그레이드하려면 기존 클러스터를 새 Kubernetes 버전으로 업데이트의 절차를 따릅니다.

  2. 자체 관리형 CoreDNS 배포가 아닌 CoreDNS용 EKS 추가 기능이 있는지 확인합니다.

    클러스터를 생성하는 데 사용한 도구에 따라 현재 클러스터에 Amazon EKS 추가 기능이 유형이 설치되어 있지 않을 수 있습니다. 클러스터에 설치된 추가 기능의 유형을 확인하려면 다음 명령을 실행합니다. my-cluster를 클러스터 이름으로 바꿉니다.

    aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query addon.addonVersion --output text

    버전 번호가 반환되는 경우 Amazon EKS 유형의 추가 기능이 클러스터에 설치됩니다. 오류가 번호가 반환되는 경우 Amazon EKS 유형의 추가 기능이 클러스터에 설치되지 않습니다. 자체 관리형 버전을 Amazon EKS 추가 기능으로 바꾸려면 CoreDNS Amazon EKS 추가 기능 생성 절차의 나머지 단계를 완료합니다.

  3. CoreDNS용 EKS 추가 기능이 최소 EKS 추가 기능 버전과 같거나 그보다 높은 버전인지 확인합니다.

    클러스터에 설치된 추가 기능의 버전을 확인하세요. AWS Management Console에서 확인하거나 다음 명령을 실행할 수 있습니다.

    kubectl describe deployment coredns --namespace kube-system | grep coredns: | cut -d : -f 3

    예제 출력은 다음과 같습니다.

    v1.10.1-eksbuild.13

    이 버전을 이전 섹션의 최소 EKS 추가 기능의 버전과 비교합니다. 필요한 경우 CoreDNS Amazon EKS 추가 기능 업데이트 절차에 따라 EKS 추가 기능을 더 높은 버전으로 업그레이드합니다.

  4. EKS 추가 기능의 선택적 구성 설정에 Auto Scaling 구성을 추가합니다.

    다음 AWS CLI 명령을 실행합니다. my-cluster를 본인의 클러스터 이름으로 바꾸고 IAM 역할 ARN을 사용 중인 역할로 바꿉니다.

    aws eks update-addon --cluster-name my-cluster --addon-name coredns \ --resolve-conflicts PRESERVE --configuration-values '{"autoScaling":{"enabled":true}}'

    Amazon EKS는 CoreDNS용 Kubernetes 배포의 롤아웃을 사용하여 EKS 추가 기능에 변경 사항을 적용합니다. AWS Management Console의 추가 기능 업데이트 기록kubectl rollout status deployment/coredns --namespace kube-system을 사용하여 롤아웃 상태를 추적할 수 있습니다.

    kubectl rollout에는 다음 명령이 있습니다.

    kubectl rollout history -- View rollout history pause -- Mark the provided resource as paused restart -- Restart a resource resume -- Resume a paused resource status -- Show the status of the rollout undo -- Undo a previous rollout

    롤아웃이 너무 오래 걸리면 Amazon EKS가 롤아웃을 취소하고 유형이 추가 기능 업데이트이고 상태가 실패인 메시지가 추가 기능의 업데이트 기록에 추가됩니다. 문제를 조사하려면 롤아웃 기록부터 시작하고 CoreDNS 포드에서 kubectl logs를 실행하여 CoreDNS의 로그를 확인합니다.

  5. (선택 사항) Auto Scaling을 통해 CoreDNS 포드 수를 조정할 수 있는 최솟값과 최댓값을 제공할 수 있습니다.

    다음 예제에서는 Auto Scaling이 활성화되어 있고 모든 선택적 키에 값이 있습니다. 클러스터의 DNS 서비스에 대한 복원력을 제공하려면 최소 CoreDNS 포드 수를 항상 2개 이상으로 설정하는 것이 좋습니다.

    aws eks update-addon --cluster-name my-cluster --addon-name coredns \ --resolve-conflicts PRESERVE --configuration-values '{"autoScaling":{"enabled":true,"minReplicas":2,"maxReplicas":10}}'
  6. 다음 명령을 실행하여 추가 기능의 업데이트 상태를 확인합니다.

    aws eks describe-addon --cluster-name my-cluster --addon-name coredns \

    "status": "ACTIVE" 줄이 표시되면 롤아웃이 완료된 것이며 추가 기능이 모든 CoreDNS 포드에서 새 구성을 사용하고 있는 것입니다. 클러스터에 있는 노드 수와 노드의 CPU 코어를 변경하면 Amazon EKS가 CoreDNS 배포의 복제본 수를 확장합니다.