eksctl을 사용하여 Amazon EKS 노드에 대해 여러 노드 그룹을 생성하려면 어떻게 해야 하나요?
eksctl을 사용하여 Amazon Elastic Kubernetes Service(Amazon EKS) 노드를 위한 여러 노드 그룹을 만들고 싶습니다.
간략한 설명
eksctl과 기본 파라미터를 사용하여 노드 그룹을 생성할 수 있습니다. 또는 사용자 지정 파라미터와 여러 노드 그룹에 대한 구성 파일을 사용하여 하나를 만들 수 있습니다.
eksctl의 최신 버전을 설치하려면 eksctl 웹사이트의 설치를 참조하세요.
eksctl이 올바른 권한으로 터미널에 구성 및 설치되었는지 확인하려면 다음 명령을 실행합니다.
$ eksctl version
그런 다음 사용하려는 파라미터 유형에 따라 다음 해결 방법 중 하나를 선택합니다.
해결 방법
기본 파라미터로 노드 그룹 생성
-
기본 파라미터를 사용하여 추가 노드 그룹을 생성하려면 다음 명령을 실행합니다.
$ eksctl create nodegroup --cluster=yourClusterName --name=yourNodeGroupName --region yourRegionName -
기본 파라미터는 다음과 같습니다.
Instance type = m5.largeAMI : lastest AWS EKS AMI Nodes-desired capacity = 2 Nodes-min capacity =2 Nodes-max capacity=2참고: 기본적으로 새 노드 그룹은 컨트롤 플레인으로부터 Kubernetes 버전을 상속합니다(–version=auto). 다른 버전의 Kubernetes를 지정할 수 있습니다(예: version=1.27). 최신 버전의 Kubernetes를 사용하려면 –version=latest 명령을 실행한다.
-
새 노드 그룹이 클러스터에 연결되었는지 확인하고 노드가 클러스터에 연결되었는지 확인하려면 다음 명령을 실행합니다.
$ kubectl get nodes $ eksctl get nodegroups --cluster yourClusterName --region yourRegionName출력에서 노드의 상태가 READY이고 노드 그룹 상태가 ACTIVE인지 확인합니다. 예를 들면, 다음과 같습니다.
노드 그룹 상태
$ eksctl get nodegroups --cluster yourClusterName --region yourRegionName CLUSTER NODEGROUP STATUS CREATED MIN SIZE MAX SIZE DESIRED CAPACITY INSTANCE TYPE IMAGE ID ASG NAME TYPE clusterName ngWorkers ACTIVE Date&Time * * * m5.large AL2_x86_64 ASGNAME managed****노드 상태
$ kubectl get nodes NAME STATUS ROLES AGE VERSION ip-***-**-**-***.region.compute.internal Ready <none> 4h v1.2x.x-eks-xx ip-***-**-***-**.region.compute.internal Ready <none> 4h v1.2x.x-eks-xx Create a node group with custom parameters
사용자 지정 파라미터로 노드 그룹 생성
-
구성 파일에서 새 노드 그룹의 파라미터를 정의합니다. 예를 들면, 다음과 같습니다.
kind: ClusterConfig apiVersion: eksctl.io/v1alpha5 metadata: name: clusterName region: region nodeGroups: - name: ngWorkers availabilityZones: ["az-name"] desiredCapacity: 3 instanceType: m5.large iam: instanceProfileARN: "arn:aws:iam::11111:instance-profile/eks-nodes-base-role" #Attaching IAM role instanceRoleARN: "arn:aws:iam::1111:role/eks-nodes-base-role" privateNetworking: true securityGroups: withShared: true withLocal: true attachIDs: ['sg-11111', 'sg-11112'] ssh: publicKeyName: 'my-instance-key' kubeletExtraConfig: kubeReserved: cpu: "300m" memory: "300Mi" ephemeral-storage: "1Gi" kubeReservedCgroup: "/kube-reserved" systemReserved: cpu: "300m" memory: "300Mi" ephemeral-storage: "1Gi" tags: 'environment': 'development' - name: ng-2-builders #example of a nodegroup that uses 50% spot instances and 50% on demand instances: minSize: 2 maxSize: 5 instancesDistribution: maxPrice: 0.017 instanceTypes: ["t3.small", "t3.medium"] # At least two instance types should be specified onDemandBaseCapacity: 0 onDemandPercentageAboveBaseCapacity: 50 spotInstancePools: 2 tags: 'environment': 'production'지원되는 파라미터 및 노드 그룹 유형에 대한 자세한 내용은 eksctl 웹사이트의 노드 그룹을 참조하세요.
-
구성 파일을 사용하여 추가 노드 그룹을 생성하려면 다음 명령을 실행합니다.
$ eksctl create nodegroup --config-file=yourConfigFileName -
(선택 사항) 2단계의 명령은 AWS CloudFormation 스택을 배포하여 EKS 노드 그룹을 위한 리소스를 생성합니다. 스택 상태를 확인하려면 CloudFormation 콘솔에 액세스하고 AWS 리전이 클러스터의 리전과 동일한지 확인합니다.
스택이 CREATE_COMPLETE 상태가 되면 eksctl 명령이 성공적으로 종료됩니다. -
새 노드 그룹이 클러스터에 연결되었는지 확인하고 노드가 클러스터에 연결되었는지 확인하려면 다음 명령을 실행합니다.
$ kubectl get nodes $ eksctl get nodegroups --cluster yourClusterName --region yourRegionName출력에서 노드의 상태가 READY이고 노드 그룹 상태가 ACTIVE인지 확인합니다. 예를 들면, 다음과 같습니다.
노드 그룹 상태$ eksctl get nodegroups --cluster yourClusterName --region yourRegionName CLUSTER NODEGROUP STATUS CREATED MIN SIZE MAX SIZE DESIRED CAPACITY INSTANCE TYPE IMAGE ID ASG NAME TYPE clusterName ngWorkers ACTIVE Date&Time * * * m5.large AL2_x86_64 ASGNAME managed노드 상태
$ kubectl get nodes NAME STATUS ROLES AGE VERSION ip-***-**-**-***.region.compute.internal Ready <none> 4h v1.2x.x-eks-xx ip-***-**-***-**.region.compute.internal Ready <none> 4h v1.2x.x-eks-xx
- 언어
- 한국어

관련 콘텐츠
- 질문됨 일 년 전
