eksctl을 사용하여 Amazon EKS 작업자 노드에 여러 노드 그룹을 생성하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 10월 2일

eksctl을 사용하여 Amazon Elastic Kubernetes Service(Amazon EKS) 작업자 노드에 여러 노드 그룹을 생성하려면 어떻게 해야 합니까?

간략한 설명

eksctl을 사용하여 기본 파라미터와 함께 또는 여러 노드 그룹에 대한 구성 파일을 사용하여 사용자 지정 파라미터로 작업자 노드 그룹을 생성할 수 있습니다.

해결 방법

기본 파라미터를 사용하여 작업자 노드 그룹 생성

1.    eksctl을 설치합니다.

2.    eksctl이 구성되어 올바른 권한을 가진 터미널에 설치되었는지 확인하려면 다음 명령을 실행합니다.

$ eksctl version

3.    기본 파라미터를 사용하여 작업자 노드 그룹을 추가로 생성하려면 다음 명령을 실행합니다.

$ eksctl create nodegroup --cluster=yourClusterName --name=yourNodeGroupName --region yourRegionName

기본 파라미터는 다음과 같습니다.

Instance type = m5.large
AMI : lastest AWS EKS AMI
Nodes-desired capacity = 2
Nodes-min capacity =2 
Nodes-max capacity=2

참고: 기본적으로 새 노드 그룹은 제어 평면에서 설치한 Kubernetes 버전(-version = auto)을 상속하지만 다른 Kubernetes 버전(예: version = 1.13)을 지정할 수 있습니다. 최신 버전의 Kubernetes를 사용하려면 -version = latest 명령을 실행합니다.

4.    AWS CloudFormation 콘솔을 열고 생성한 노드 그룹과 연결된 스택을 선택한 후 [Events] 탭을 선택하여 스택이 배포된 것으로 표시된 AWS CloudFormation 이벤트를 찾습니다.

5.    새 작업자 노드 그룹이 클러스터에 연결되었는지 확인하고 노드 그룹 구성이 적용되었는지 검증하려면 다음 명령을 실행합니다.

$ Kubectl get nodes
$ eksctl get nodegroups --cluster yourClusterName

사용자 지정 파라미터를 사용하여 작업자 노드 그룹 생성

1.    구성 파일에서 새 작업자 노드 그룹의 파라미터를 정의합니다. 다음 예제를 참조하십시오.

kind: ClusterConfig
metadata:
name: yourClusterName
region: yourRegionName
nodeGroups:
 - name: ng1-Workers
   availabilityZones: ["az-name"]
   desiredCapacity: 3
   instanceType: m5.large
    desiredCapacity: 3
    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'

2.    구성 파일을 사용하여 추가 작업자 노드 그룹을 생성하려면 다음 명령을 실행합니다.

$ eksctl create nodegroup --config-file= yourConfigFileName

3.    AWS CloudFormation 콘솔을 열고 생성한 노드 그룹과 연결된 스택을 선택한 후 [Events] 탭을 선택하여 스택이 배포된 것으로 표시된 AWS CloudFormation 이벤트를 찾습니다.

4.    새 작업자 노드 그룹이 클러스터에 연결되었는지 확인하고 노드 그룹 구성이 적용되었는지 검증하려면 다음 명령을 실행합니다.

$ Kubectl get nodes
$ eksctl get nodegroups --cluster yourClusterName

이제 작업자 노드가 클러스터에 조인된 것으로 표시됩니다. eksctl을 통해 두 개의 노드 그룹이 표시됩니다.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?