이 페이지 개선에 도움 주기
이 사용자 설명서에 기여하고 싶으신가요? 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다. 여러분의 기여는 모두를 위한 더 나은 사용자 설명서를 만드는 데 도움이 됩니다.
자체 관리형 Bottlerocket 노드 생성
참고
관리형 노드 그룹은 사용 사례에 대한 몇 가지 이점을 제공할 수 있습니다. 자세한 내용은 관리형 노드 그룹을 사용한 노드 수명 주기 간소화 섹션을 참조하세요.
이 주제에서는 Amazon EKS 클러스터에 등록하는 Bottlerocketeksctl
문서에서 GitHub 및 사용자 지정 AMI 지원
현재 위치 업그레이드에 대한 자세한 내용은 GitHub의 Bottlerocket Update Operator
중요
-
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
버전 0.199.0
이상이 필요합니다. 버전은 다음 명령을 통해 확인할 수 있습니다.
eksctl version
eksctl
을 설치하거나 업그레이드하는 방법에 대한 지침은 eksctl
문서의 설치eksctl
로 생성한 클러스터에서만 작동합니다.
+ . 다음 콘텐츠를 디바이스에 복사합니다. my-cluster
를 해당 클러스터의 이름으로 바꿉니다. 이름에는 영숫자(대소문자 구분)와 하이픈만 사용할 수 있습니다. 영숫자로 시작해야 하며 100자 이하여야 합니다. 이름은 클러스터를 생성하는 AWS 리전과 AWS 계정 내에서 고유해야 합니다. no-bottlerocket
을 노드 그룹의 이름으로 바꿉니다. 노드 그룹 이름은 63자를 초과할 수 없습니다. 문자나 숫자로 시작하되, 나머지 문자의 경우 하이픈과 밑줄을 포함할 수 있습니다. Arm 인스턴스에 배포하려면 m5.large
을 Arm 인스턴스 유형으로 바꿉니다. my-ec2-keypair-name
을 시작 이후 SSH를 사용하여 노드에 연결하는 데 사용할 수 있는 Amazon EC2 SSH 키 페어 이름으로 변경합니다. Amazon EC2 키 페어가 아직 없는 경우 AWS Management Console에서 새로 생성할 수 있습니다. 자세한 내용을 알아보려면 Amazon EC2 key pairs의 Amazon EC2 키 페어를 참조하세요. 나머지 예제 값
을 자신의 값으로 바꿉니다. 다 바꾼 후 수정된 명령을 실행하여 bottlerocket.yaml
파일을 생성합니다.
+ Arm Amazon EC2 인스턴스 유형을 지정하는 경우 배포하기 전에 Arm Amazon Linux AMIs의 고려 사항을 검토하세요. 사용자 지정 AMI를 사용하여 배포하는 방법에 대한 지침은 eksctl
문서에서 GitHub에 Bottlerocket 구축
+ 중요: 노드 그룹을 AWS Outposts, AWS Wavelength 또는 AWS Local Zones 서브넷에 배포하려면 클러스터를 생성할 때 AWS Outposts, AWS Wavelength 또는 AWS 로컬 영역 서브넷을 전달하지 마세요. 다음 예에서는 서브넷을 지정해야 합니다. 자세한 내용은 eksctl
문서에서 구성 파일을 사용하여 nodegroup 생성region-code
를 클러스터가 있는 AWS 리전으로 바꿉니다.
+
cat >bottlerocket.yaml <<EOF --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code version: '1.30' 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’s default setting, edit the `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)에 액세스할 필요가 없습니다.
자세한 내용은 워커 노드에 할당된 인스턴스 프로필에 대한 액세스 제한
섹션을 참조하세요. -