Amazon EKS에서 Bottlerocket AMI를 사용하여 관리형 노드 그룹을 만들려면 어떻게 해야 하나요?

3분 분량
0

eksctl을 사용하여 Bottlerocket Amazon Machine Image(Bottlerocket AMI)를 실행하여 Amazon Elastic Kubernetes Service(Amazon EKS)에서 관리형 노드 그룹을 만들고 싶습니다.

해결 방법

선행 조건

1.    eksctl 버전 0.124.0 이상이 설치되어 있는지 확인합니다.

2.    다음 명령을 실행하여 버전을 확인합니다.

$ eksctl version

bottlerocket.yaml 파일 생성

1.    eksctl을 설치한 터미널을 엽니다. 그 후 다음 단계를 완료하여 새 파일을 생성합니다.

2.    mybottlerocket-cluster를 클러스터 이름으로 바꿉니다. 이름에는 영숫자(대소문자 구분)와 하이픈만 사용할 수 있습니다. 영문자로 시작해야 하며 100자를 넘을 수 없습니다.

3.    bottlerocket-nodegroup을 노드 그룹의 이름으로 바꿉니다. 이름에는 영숫자(대소문자 구분)와 하이픈만 사용할 수 있습니다. 영문자로 시작해야 하며 100자를 넘을 수 없습니다.

4.    인스턴스 유형을 지정합니다. 예를 들어, ARM 인스턴스에 배포하려면 m5.xlarge를 ARM 인스턴스 유형으로 바꿉니다.

5.    eks_bottlerocket을 Amazon Elastic Compute Cloud(Amazon EC2) SSH 키 페어의 이름으로 바꿉니다. 시작한 후 SSH를 사용하여 노드에 연결합니다.

참고: Amazon EC2 SSH 키 페어가 없는 경우 AWS Management Console에서 키 페어를 생성하세요. 자세한 내용은 Amazon EC2 키 페어 및 Linux 인스턴스를 참조하세요.

6.    예시의 나머지 값을 모두 자체 값으로 바꿉니다. 교체한 후 bottlerocket.yaml 파일을 저장합니다.

---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
 
metadata:
  name: mybottlerocket-cluster
  region: us-west-2
  version: '1.23'
 
managedNodeGroups:
  - name: bottlerocket-nodegroup
    instanceType: m5.xlarge
    minSize: 2
    maxSize: 4
    desiredCapacity: 3
    amiFamily: Bottlerocket
    labels: { role: br-worker }
    tags:
       nodegroup-type: Bottlerocket
    ssh:
      allow: true
      publicKeyName: eks_bottlerocket

참고: 모든 기본 인스턴스 유형에 대해 BottleRocket-managed 노드 그룹을 생성할 수 있습니다. 여기에는 정적 스케일링(T 시리즈), 범용(M 시리즈), 컴퓨팅 최적화(C 시리즈), 메모리 최적화(R 시리즈) 및 Graviton2 ARM 기반 인스턴스 유형이 있습니다. Bottlerocket AMI는 가속 컴퓨팅 인스턴스 유형(P, G, Inf1)을 지원하지 않습니다.

Bottlerocket AMI에 대한 자세한 내용은 Amazon EKS 최적화된 Bottlerocket AMI를 참조하세요.

노드 그룹을 생성하고 해당 노드를 EKS 클러스터에 나열

1.    다음 eksctl 명령을 실행하여 노드 그룹을 생성합니다.

$ eksctl create nodegroup -f bottlerocket.yaml
[✔]  created 1 nodegroup(s) in cluster "mybottlerocket-cluster"

2.    속성과 함께 EKS 클러스터의 노드를 나열합니다.

$ kubectl get nodes -o=custom-columns=NODE:.metadata.name,ARCH:.status.nodeInfo.architecture,OS-Image:.status.nodeInfo.osImage,OS:.status.nodeInfo.operatingSystem
NODE                                          ARCH    OS-Image                                OS
ip-192-168-xx-xx.us-west-2.compute.internal   amd64   Bottlerocket OS 1.11.1 (aws-k8s-1.23)   linux
ip-192-168-xx-xx.us-west-2.compute.internal   amd64   Bottlerocket OS 1.11.1 (aws-k8s-1.23)   linux
ip-192-168-xx-xx.us-west-2.compute.internal   amd64   Bottlerocket OS 1.11.1 (aws-k8s-1.23)   linux

Bottlerocket AMI 노드에 연결(선택 사항)

AWS Systems Manager(AWS SSM) 세션을 통해 새 Bottlerocket 노드에 연결합니다. 노드 인스턴스 역할에 대해 AWS SSM 권한을 이미 설정했으므로 AWS SSM 에이전트가 노드에서 실행됩니다. AWS SSM에 대한 자세한 내용은 AWS Systems Manager란 무엇인가요?를 참조하세요.

1.    다음 명령을 실행하여 인스턴스 ID를 찾습니다.

$ kubectl get nodes -o=custom-columns=NODE:.metadata.name,ARCH:.status.nodeInfo.architecture,OS-Image:.status.nodeInfo.osImage,OS:.status.nodeInfo.operatingSystem,InstanceId:.spec.providerID
NODE                                           ARCH    OS-Image                                OS      InstanceId
ip-192-168-xx-xx.us-west-2.compute.internal    amd64   Bottlerocket OS 1.11.1 (aws-k8s-1.23)   linux   aws:///us-west-2b/i-0cf32f13f60c2f501
ip-192-168-xx-xx.us-west-2.compute.internal    amd64   Bottlerocket OS 1.11.1 (aws-k8s-1.23)   linux   aws:///us-west-2b/i-0f31328a5d21cb092
ip-192-168-xx-xx.us-west-2.compute.internal    amd64   Bottlerocket OS 1.11.1 (aws-k8s-1.23)   linux   aws:///us-west-2b/i-08c218b729ecf9b5d

SSM 세션 시작

기본적으로 Bottlerocket에는 별도의 containerd 인스턴스에서 실행되는 제어 컨테이너가 있습니다. 이 컨테이너는 AWS SSM 에이전트를 실행하며 Bottlerocket 노드에서 명령을 실행하거나 대화형 쉘 세션을 시작할 수 있습니다.

1.    이전에 식별한 인스턴스 중 하나를 선택하고 SSM 세션을 시작합니다. 다음 예는 i-0cf32f13f60c2f501 인스턴스에 대한 SSM 세션 명령을 보여 줍니다.

$ aws ssm start-session --target i-0cf32f13f60c2f501 --region us-west-2
Starting session with SessionId: EKS-Test-User-0077e4c89ad2bc888
          Welcome to Bottlerocket's control container!

관련 정보

자체 관리형 Bottlerocket 노드 시작

Amazon EKS란?

AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음

관련 콘텐츠