이 페이지 개선에 도움 주기
이 사용자 설명서에 기여하고 싶으신가요? 이 페이지 하단으로 스크롤하여 GitHub에서 이 페이지 편집을 선택하세요. 여러분의 기여는 모두를 위한 더 나은 사용자 설명서를 만드는 데 도움이 됩니다.
자체 관리형 Bottlerocket 노드 생성
참고
관리형 노드 그룹은 사용 사례에 대한 몇 가지 이점을 제공할 수 있습니다. 자세한 내용은 관리형 노드 그룹을 사용한 노드 수명 주기 간소화 단원을 참조하십시오.
이 주제에서는 Amazon EKS 클러스터에 등록하는 Bottlerocketeksctl
설명서의 사용자 지정 AMI 지원
현재 위치 업그레이드에 대한 자세한 내용을 알아보려면 Bottlerocket의 GitHub 업데이트 오퍼레이터
중요
Amazon EKS 노드는 표준 Amazon EC2 인스턴스이고, 일반 Amazon EC2 인스턴스 가격을 기반으로 비용이 청구됩니다. 자세한 설명은 Amazon EC2 요금
을 참조하세요. -
Bottlerocket 노드를 AWS Outposts의 Amazon EKS 확장 클러스터에서 시작할 수 있지만 AWS Outposts의 로컬 클러스터에서는 시작할 수 없습니다. 자세한 내용은 AWS Outposts를 사용한 Amazon EKS 온프레미스 배포 단원을 참조하십시오.
-
x86
또는 Arm 프로세서가 있는 Amazon EC2 인스턴스에 배포할 수 있습니다. 그러나 Inferentia 칩이 있는 인스턴스에는 배포할 수 없습니다. -
Bottlerocket은 AWS CloudFormation과 호환됩니다. 그러나 Amazon EKS용 Bottlerocket 노드를 배포하기 위해 복사할 수 있는 공식 CloudFormation 템플릿은 없습니다.
-
Bottlerocket 이미지는 SSH 서버나 셸과 함께 제공되지 않습니다. 대역 외 액세스 방법을 사용하여 SSH가 관리 컨테이너를 사용 설정하고 사용자 데이터와 함께 일부 부트스트래핑 구성 단계를 전달하도록 할 수 있습니다. 자세한 내용은 GitHub의 bottlerocket README.md
에 있는 관련 부분을 참조하세요.
eksctl
을 사용하여 Bottlerocket 노드 시작
이 절차에는 eksctl
버전 0.191.0
이상이 필요합니다. 버전은 다음 명령을 통해 확인할 수 있습니다.
eksctl version
eksctl
설치 또는 업데이트에 대한 지침은 eksctl
설명서에서 Installation
참고
이 방법은 eksctl
로 생성된 클러스터에만 사용할 수 있습니다.
-
다음 콘텐츠를 디바이스에 복사합니다.
를 클러스터 이름으로 바꿉니다. 이름에는 영숫자(대소문자 구분)와 하이픈만 사용할 수 있습니다. 영숫자로 시작해야 하며 100자 이하여야 합니다. 이름은 클러스터를 생성하는 AWS 리전과 AWS 계정 내에서 고유해야 합니다.my-cluster
을 노드 그룹의 이름으로 바꿉니다. 노드 그룹 이름은 63자를 초과할 수 없습니다. 문자나 숫자로 시작하되, 나머지 문자의 경우 하이픈과 밑줄을 포함할 수 있습니다. Arm 인스턴스에 배포하려면ng-bottlerocket
을 Arm 인스턴스 유형으로 바꿉니다.m5.large
을 시작 이후 SSH를 사용하여 노드에 연결하는 데 사용할 수 있는 Amazon EC2 SSH 키 페어 이름으로 변경합니다. Amazon EC2 키 페어가 아직 없는 경우 AWS Management Console에서 새로 생성할 수 있습니다. 자세한 내용을 알아보려면 Amazon EC2 사용 설명서의 Amazon EC2 키 페어를 참조하세요. 나머지my-ec2-keypair-name
를 고유한 값으로 모두 바꿉니다. 다 바꾼 후 수정된 명령을 실행하여example values
bottlerocket.yaml
파일을 생성합니다.Arm Amazon EC2 인스턴스 유형을 지정하는 경우 배포하기 전에 Amazon EKS 최적화 Arm Amazon Linux AMI의 고려 사항을 검토하세요. 사용자 지정 AMI를 사용하여 배포하는 방법에 대한 지침은 Bottlerocket의 GitHub 빌드
및 eksctl
설명서의 사용자 지정 AMI 지원을 참조하세요. 관리형 노드 그룹을 배포하려면 시작 템플릿을 사용하여 사용자 정의 AMI를 배포합니다. 자세한 내용은 시작 템플릿을 사용한 관리형 노드 사용자 지정 단원을 참조하십시오. 중요
노드 그룹을 AWS Outposts, AWS Wavelength 또는 AWS Local Zones 서브넷에 배포하려면 클러스터를 생성할 때 AWS Outposts, AWS Wavelength 또는 AWS Local Zones 서브넷을 전달하지 마세요. 다음 예에서는 서브넷을 지정해야 합니다. 자세한 내용은
eksctl
문서에서 구성 파일을 사용하여 nodegroup 생성및 구성 파일 스키마 부분을 참조하세요. AWS 리전를 클러스터가 있는
으로 바꿉니다.region-code
cat >bottlerocket.yaml <<EOF --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name:
my-cluster
region:region-code
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:my-ec2-keypair-name
EOF -
다음 명령을 사용하여 노드를 배포합니다.
eksctl create nodegroup --config-file=bottlerocket.yaml
예제 출력은 다음과 같습니다.
노드가 생성되는 동안 여러 줄이 출력됩니다. 출력의 마지막 줄 중 하나는 다음 예제 줄과 유사합니다.
[✔] created 1 nodegroup(s) in cluster "
my-cluster
" -
(선택 사항) Amazon EBS CSI 플러그 인
을 사용하여 Bottlerocket 노드에 Kubernetes 영구 볼륨 을 생성합니다. 기본 Amazon EBS 드라이버는 Bottlerocket에 포함되지 않은 파일 시스템 도구에 의존합니다. 드라이버를 사용하여 스토리지 클래스를 생성하는 방법에 대한 자세한 내용은 Amazon EBS를 사용한 Kubernetes 볼륨 저장 부분을 참조하세요. -
(선택 사항) 기본적으로
kube-proxy
는 Bottlerocket이 부팅 시에 원래 설정한 것과 다를 수 있는 기본값으로nf_conntrack_max
커널 파라미터를 설정합니다. Bottlerocket의 기본 설정을 유지하려면 다음 명령을 사용하여 kube-proxy
구성을 편집합니다.kubectl edit -n kube-system daemonset kube-proxy
--conntrack-max-per-core
및--conntrack-min
을 다음 예에 있는kube-proxy
인수에 추가합니다.0
으로 설정할 경우 변경하지 않음을 나타냅니다.containers: - command: - kube-proxy - --v=2 - --config=/var/lib/kube-proxy-config/config
- --conntrack-max-per-core=0 - --conntrack-min=0
-
(선택 사항) 샘플 애플리케이션을 배포하여 Bottlerocket 노드를 테스트합니다.
다음과 같은 조건에 해당하면 IMDS에 대한 Pod 액세스를 차단하는 것이 좋습니다.
Pods에 필요한 최소 권한만 있도록 모든 Kubernetes 서비스 계정에 IAM 역할을 할당할 계획입니다.
클러스터의 어떤 Pods도 현재 AWS 리전 검색과 같은 다른 이유로 Amazon EC2 인스턴스 메타데이터 서비스(IMDS)에 액세스할 필요가 없습니다.
자세한 내용은 워커 노드에 할당된 인스턴스 프로파일에 대한 액세스 제한
섹션을 참조하세요.