Amazon Linux 2에서 Amazon Linux 2023으로 업그레이드

Amazon Linux 2에서 Amazon Linux 2023으로 업그레이드

Amazon EKS에서 AL2(Amazon Linux 2)를 AL2023로 업그레이드하는 방법과 nodeadm 구성 변화를 설명합니다.

출처: 문서

본문

경고

Amazon EKS는 2025년 11월 26일에 EKS 최적화 Amazon Linux 2(AL2) AMI 게시를 중단했습니다. Amazon EKS용 AL2023 및 Bottlerocket 기반 AMI는 1.33 이상을 포함한 모든 지원 Kubernetes 버전에서 사용할 수 있습니다.

AL2023은 클라우드 애플리케이션에 보안, 안정성, 고성능 환경을 제공하도록 설계된 Linux 기반 운영 체제입니다. Amazon Web Services의 차세대 Amazon Linux이며 모든 지원 Amazon EKS 버전에서 사용할 수 있습니다.

AL2023은 AL2에 비해 몇 가지 개선 사항을 제공합니다. 전체 비교는 Amazon Linux 2023 사용자 가이드의 AL2와 Amazon Linux 2023 비교를 참조하세요. AL2에서 여러 패키지가 추가, 업그레이드, 제거되었습니다. 업그레이드 전에 AL2023으로 애플리케이션을 테스트할 것을 적극 권장합니다. AL2023의 모든 패키지 변경 목록은 Amazon Linux 2023 릴리스 노트의 Amazon Linux 2023 패키지 변경을 참조하세요.

이러한 변경 외에도 다음 사항을 알고 있어야 합니다.

  • AL2023은 YAML 구성 스키마를 사용하는 새 노드 초기화 프로세스 nodeadm을 도입합니다. 자체 관리형 노드 그룹이나 사용자 지정 AMI ID를 지정하는 시작 템플릿을 사용한다면 이제 추가 클러스터 메타데이터를 명시적으로 제공해야 합니다. 새 노드 그룹을 만들 때 이 메타데이터를 제공해야 합니다. nodeadm 최소 필수 매개변수 예시는 다음과 같으며, 여기서 apiServerEndpoint, certificateAuthority, 서비스 cidr은 이제 필수입니다.
---
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name: my-cluster
    apiServerEndpoint: https://example.com
    certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk=
    cidr: 10.100.0.0/16

AL2에서는 이 매개변수의 메타데이터가 Amazon EKS DescribeCluster API 호출에서 검색되었습니다. AL2023에서는 대규모 노드 스케일아웃 중 추가 API 호출이 제한(throttling)될 위험이 있으므로 이 동작이 변경되었습니다. 이 변경은 시작 템플릿 없이 관리형 노드 그룹을 사용하거나 Karpenter를 사용하는 경우에는 영향을 주지 않습니다. certificateAuthority 및 서비스 cidr에 대한 자세한 내용은 Amazon EKS API 참조의 DescribeCluster를 참조하세요.

  • AL2023의 경우 nodeadm은 NodeConfigSpec을 사용하여 각 노드의 kubelet에 매개변수를 적용하는 형식도 변경합니다. AL2에서는 --kubelet-extra-args 매개변수로 수행했습니다. 이는 일반적으로 노드에 라벨과 테인트(taint)를 추가하는 데 사용됩니다. 아래 예시는 노드에 maxPods와 --node-labels를 적용하는 방법을 보여줍니다.
---
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name: test-cluster
    apiServerEndpoint: https://example.com
    certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk=
    cidr: 10.100.0.0/16
  kubelet:
    config:
      maxPods: 110
    flags:
      - --node-labels=karpenter.sh/capacity-type=on-demand,karpenter.sh/nodepool=test
  • AL2023에는 Amazon VPC CNI 버전 1.16.2 이상이 필요합니다.
  • AL2023은 기본적으로 IMDSv2를 요구합니다. IMDSv2는 보안 태세를 개선하는 여러 이점을 제공합니다. 세션을 시작하려면 간단한 HTTP PUT 요청에서 비밀 토큰을 생성해야 하는 세션 지향 인증 방법을 사용합니다. 세션 토큰은 1초에서 6시간 사이로 유효할 수 있습니다. IMDSv1에서 IMDSv2로 전환하는 방법에 대한 자세한 내용은 인스턴스 메타데이터 서비스 버전 2로 전환 및 AWS 인프라 전반에서 IMDSv2의 전체 이점을 얻고 IMDSv1 비활성화를 참조하세요. IMDSv1을 사용하려면 인스턴스 메타데이터 옵션 시작 속성을 사용하여 설정을 수동으로 재정의할 수 있습니다.

참고

AL2023과 함께 IMDSv2를 사용할 때 관리형 노드 그룹의 기본 홉 카운트(hop count)는 다양할 수 있습니다.

  • 시작 템플릿을 사용하지 않을 때 기본값은 1로 설정됩니다. 즉 컨테이너가 IMDS를 사용하여 노드의 자격 증명에 접근할 수 없습니다. 컨테이너가 노드의 자격 증명에 접근해야 한다면 사용자 지정 Amazon EC2 시작 템플릿을 사용할 수 있습니다.
  • 시작 템플릿에서 사용자 지정 AMI를 사용할 때 기본 HttpPutResponseHopLimit는 2로 설정됩니다. 시작 템플릿에서 HttpPutResponseHopLimit를 수동으로 재정의할 수 있습니다.

또는 IMDSv2 대신 Amazon EKS Pod Identity를 사용하여 자격 증명을 제공할 수 있습니다.

  • AL2023은 차세대 통합 제어 그룹 계층 구조(cgroupv2)를 특징으로 합니다. cgroupv2는 컨테이너 런타임과 systemd에서 구현하는 데 사용됩니다. AL2023에는 cgroupv1을 사용하여 시스템을 실행할 수 있는 코드가 여전히 포함되어 있지만 이는 권장되거나 지원되는 구성이 아닙니다. 이 구성은 향후 Amazon Linux 주요 릴리스에서 완전히 제거됩니다.
  • eksctl이 AL2023을 지원하려면 eksctl 버전 0.176.0 이상이 필요합니다.

기존 관리형 노드 그룹의 경우 시작 템플릿 사용 방식에 따라 인플레이스(in-place) 업그레이드 또는 블루/그린(blue/green) 업그레이드를 수행할 수 있습니다.

  • 관리형 노드 그룹에서 사용자 지정 AMI를 사용한다면 시작 템플릿의 AMI ID를 교체하여 인플레이스 업그레이드를 수행할 수 있습니다. 이 업그레이드 전략을 수행하기 전에 애플리케이션과 모든 사용자 데이터가 AL2023으로 전환되는지 먼저 확인해야 합니다.
  • 표준 시작 템플릿 또는 AMI ID를 지정하지 않는 사용자 지정 시작 템플릿과 함께 관리형 노드 그룹을 사용한다면 블루/그린 전략으로 업그레이드해야 합니다. 블루/그린 업그레이드는 일반적으로 더 복잡하며 AL2023을 AMI 유형으로 지정하는 완전히 새로운 노드 그룹을 만드는 것을 포함합니다. 그런 다음 AL2 노드 그룹의 모든 사용자 지정 데이터가 새 OS와 호환되도록 새 노드 그룹을 신중하게 구성해야 합니다. 새 노드 그룹이 애플리케이션으로 테스트되고 검증된 후에 Pod를 이전 노드 그룹에서 새 노드 그룹으로 마이그레이션할 수 있습니다. 마이그레이션이 완료되면 이전 노드 그룹을 삭제할 수 있습니다.
  • Karpenter를 사용하며 AL2023을 사용하려면 EC2NodeClass의 amiFamily 필드를 AL2023으로 수정해야 합니다. 기본적으로 Karpenter에서 Drift가 활성화됩니다. 즉 amiFamily 필드를 변경한 후 Karpenter가 사용 가능한 최신 AMI로 워커 노드를 자동으로 업데이트합니다.

nodeadm에 대한 추가 정보

EKS 최적화 Amazon Linux 2023 AMI를 사용하거나 공식 amazon-eks-ami GitHub 저장소에서 제공하는 Packer 스크립트로 사용자 지정 EKS Amazon Linux 2023 AMI를 구축할 때 EC2 User Data 내에서 또는 사용자 지정 AMI의 일부로 nodeadm init을 명시적으로 실행하는 것을 피해야 합니다.

사용자 데이터에서 동적 NodeConfig를 생성하려면 해당 구성을 /etc/eks/nodeadm.d의 드롭인(drop-in) yaml 또는 json 파일에 작성할 수 있습니다. 이러한 구성 파일은 부팅 프로세스 후반에 nodeadm init이 자동으로 시작될 때 병합되어 노드에 적용됩니다.

cat > /etc/eks/nodeadm.d/additional-node-labels.yaml

더 알아보기 (Learn more)