Bottlerocket AMI를 사용하여 Amazon Elastic Kubernetes Service(Amazon EKS)에 관리형 노드 그룹을 만들고 싶습니다.
해결 방법
eksctl을 구성 파일과 함께 사용하여 Bottlerocket 관리형 노드 그룹을 만들 수 있습니다.
사전 요구 사항
- eksctl 버전 0.124.0 이상
- 기존 Amazon EKS 클러스터
- 노드에 대한 SSH 액세스를 원하는 경우 Amazon Elastic Compute Cloud(Amazon EC2) SSH 키 페어 필요
Bottlerocket AMI를 사용하여 관리형 노드 그룹을 만들려면 다음 단계를 완료하십시오.
eksctl 버전 확인
eksctl 버전을 확인하려면 다음 명령을 실행합니다.
eksctl version
eksctl을 설치하거나 업그레이드해야 하는 경우 Eksctl의 설치 옵션을 참조하십시오.
구성 파일 만들기
중요: Bottlerocket은 범용, 컴퓨팅 최적화, 메모리 최적화 및 스토리지 최적화 인스턴스 유형을 지원합니다. Bottlerocket은 가속 컴퓨팅 인스턴스를 지원하지 않습니다.
다음과 같이 구성하여 bottlerocket.yaml이라는 파일을 만듭니다.
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: mybottlerocket-cluster
region: your-region
version: '1.31'
iam:
withOIDC: true
nodeGroups:
- name: ng-bottlerocket
instanceType: m5.large
desiredCapacity: 3
amiFamily: Bottlerocket
ami: auto-ssm
iam:
attachPolicyARNs:
- arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
- arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
- arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
- arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
ssh:
allow: true
publicKeyName: your-ec2-keypair-name
참고: mybottlerocket-cluster를 클러스터 이름으로 바꾸십시오. your-region을 해당 AWS 리전으로 바꾸십시오. your-ec2-keypair-name을 Amazon EC2 SSH 키 페어 이름으로 바꾸십시오. Amazon EC2 키 페어가 없는 경우 Amazon EC2 인스턴스용 키 페어 만들기를 참조하십시오.
관리형 노드 그룹 만들기
관리형 노드 그룹을 만들려면 다음 명령을 실행합니다.
eksctl create nodegroup --config-file=bottlerocket.yaml
이 명령은 노드 그룹을 만들고 클러스터에 노드를 등록합니다. 이 프로세스를 완료하는 데 몇 분 정도 걸립니다.
노드 확인
노드가 실행 중인지 확인하려면 다음 명령을 실행합니다.
kubectl get nodes -o wide
출력에는 Bottlerocket 노드의 상태, Kubernetes 버전 및 운영 체제 정보가 표시됩니다.
출력 예시:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
ip-[IP_ADDRESS].us-west-2.compute.internal Ready <none> 5m v1.31.0 [IP_ADDRESS] <none> Bottlerocket OS 1.20.0 (aws-k8s-1.31) 5.15.0 containerd://1.7.11
Bottlerocket 노드에 연결
Bottlerocket 노드에는 기본적으로 SSH 서버 또는 셸이 포함되지 않습니다. 문제 해결을 위해 Bottlerocket 노드에 연결하려면 AWS Systems Manager Session Manager를 사용하십시오.
Bottlerocket 노드에 연결하려면 다음 단계를 완료하십시오.
-
Amazon EC2 콘솔에서 또는 다음 명령을 실행하여 Bottlerocket 노드의 인스턴스 ID를 검색합니다.
kubectl get nodes -o wide
-
인스턴스 ID를 사용하여 Session Manager 세션을 시작합니다. 세션 시작에 대한 자세한 내용은 세션 시작(Systems Manager 콘솔)을 참조하십시오.
참고: 노드 그룹 구성의 AmazonSSMManagedInstanceCore IAM 정책을 사용하면 Session Manager가 Bottlerocket 노드에 액세스할 수 있습니다.
관련 정보
자체 관리형 Bottlerocket 노드 만들기
관리형 노드 그룹으로 노드 수명 주기 간소화
github 웹 사이트에서 Amazon EKS와 Bottlerocket AMI 함께 사용