EKS Managed Node Group에서 Spot Instance를 사용하기 위한 설문 조사 요약

5968 단어 AWSTerraformEKStech

이거 뭐야?


EKS Managed Node Group에서 Spot Instance를 사용한 설문 조사를 요약한 것입니다.

날과 씨


EKS Managed Node Group에서 Spot Instance가 해제되어 가져오려고 합니다.
Amazon EKS는 관리 노드 그룹에서 EC2 인스턴스 제공 및 관리 지원에 기재된 바와 같이 EKS의 워커 노드에서도 스팟 인스턴트를 사용할 수 있고, 스팟 인스턴트를 사용하려고 한다.

Spot Instance의 사양 개요


EKS Managed Node Group용 Spot Instance의 사양은 대체로 다음과 같습니다.
  • Instance의 할당 전략 적용capacity-optimized
  • 비어 있는 풀의 여러 Instance 크기부터 우선 시작
  • Instance 스왑의 위험 감소(비슷함)
  • 여분의 인스턴트 타입이라 가격도 안정적(아마도)
  • 참조
  • Introducing the capacity-optimized allocation strategy for Amazon EC2 Spot Instances
  • Capacity Rebalancing Spot Instance 중단 위험을 사전 감지하여 Instance 교체
  • 는 기본적으로Graceful shutdown이며, 현재 이동하는 instance는terminate 이전에 새로운 instance가ready
  • 가 되었다.
  • 그러나 반드시 보증하는 것은 아니다. 상황에 따라(on-deman이 요구하는 실례수 폭등)EC2의terminate 2분 전에 알림과 같은 시간에 실행할 수도 있고, 바뀐 node가ready가 되기 전에 기존의 nodeterminate
  • 참조
  • Managed node group capacity types
  • EC2 instance rebalance recommendations
  • Spot Instance에 레이블eks.amazonaws.com/capacityType=SPOT 추가
  • Affinity, AntiAffinity 등
  • 에 사용 가능
  • 가장 늦은 경우terminate 2분 전에 시스템 정지 작업
  • EC2에 신호를 보내고 정지

  • Spot Instance 사용 시 고려 사항

  • EC2를 내결함성 추적기에 적용하여 EC2가 언제든지Terminate에 적용될 수 있도록 함
  • 최악의 경우 Spot Instance가 terminate에 의해 만들어지기 2분 전부터 terminate
  • 를 준비한다.
  • DaemonSet 또는 모니터링 툴에 권장되지 않는 node
  • 응용의 가용성을 높이기 위해 관리형 노드 그룹에 여러 개의 실례 유형을 포함한다
  • 특정 실례 유형이 비어야 한다는 것을 보장하지 않는다
  • 거의 같은 양의 vCPU와 메모리의 모든 실례 유형을 지정하는 것을 추천합니다
  • 예m5.xlarge, m4.xlarge, m5a.xlarge, m5d.xlarge, …
  • 노드 그룹에 대해 On-demand or Spot Instance 중 하나만 지정할 수 있습니다.
  • 전환 시 노드 그룹 다시 만들기
  • Spot Instance의 max 요금을 설정할 수 없습니다.
  • Managed Node Group에 대해 지정되지 않은 패턴(Terraform 동작에만 해당)
  • 기타, 일반 launch template로 지정할 수 없음
  • Terraform 적응법


    Spot Instance는 기본적으로 aws_eks_node_groupcapacity_typeSPOT로 설정하면 사용할 수 있다.
    Resource: aws_eks_node_group에도 다음과 같은 기록이 있다.
    capacity_type - (Optional) Type of capacity associated with the EKS Node Group. Valid values: ON_DEMAND, SPOT. Terraform will only perform drift detection if a configuration value is provided.
    단, aws_launch_templateaws_eks_node_group를 병용한 경우 설정치에 제한이 있어 앱리로 확인하는 것이 안전하다.
    예를 들어 capacity_type=SPOT를 지정하면 aws_launch_templateinstance_market_options를 사용할 수 없습니다.
    variable "is_prod" { type = bool }
    
    resource "aws_launch_template" "eks_worker_template" {
      name     = "launch_template"
    
      # Spot Instanceを利用する場合にはaws_eks_node_group側でinstance typeを指定する
      instance_type  = var.is_prod ? "t3.medium" : ""
    
      # いろいろ設定が続く...
    }
    
    resource "aws_eks_node_group" "eks_worker" {
      cluster_name = "eks-cluster-name"
      node_group_name = "node-group-name"
    
      capacity_type = var.is_prod ? "ON_DEMAND" : "SPOT"
      instance_types = local.is_prod ? [] : ["t3.medium", "t2.medium"]
    
      launch_template {
        id      = aws_launch_template.eks_worker_template.id
        version = aws_launch_template.eks_worker_template.latest_version
      }
    
      # いろいろ設定が続く...
    }
    

    잡감

  • 한 설정을 Spot Instance로 전환하는 것이 매우 편리합니다
  • 너무 편리해요. 규격을 이해하지 못하면 무슨 일이 생기면 장애가 생길 수 있어요
  • 참고 자료


    개념과

  • Amazon EKS는 관리 노드 그룹에서 EC2 인스턴스 제공 및 관리 지원
  • Amazon EC 2 인스턴스를 사용한 네트워크 애플리케이션 구축
  • Capacity-Optimized Spot Instance Allocation in Action at Mobileye and Skyscanner
  • EKS Managed Node Group에서 Spot Instances 사용
  • Introducing the capacity-optimized allocation strategy for Amazon EC2 Spot Instances
  • Managed node groups
  • Terraform 설치 시스템

  • cloudposse/terraform-aws-eks-node-group
  • 좋은 웹페이지 즐겨찾기