eksctl을 사용하여 Amazon EKS 노드에 대해 여러 노드 그룹을 생성하려면 어떻게 해야 하나요?

3분 분량
0

eksctl을 사용하여 Amazon Elastic Kubernetes Service(Amazon EKS) 노드를 위한 여러 노드 그룹을 만들고 싶습니다.

간략한 설명

eksctl과 기본 파라미터를 사용하여 노드 그룹을 생성할 수 있습니다. 또는 사용자 지정 파라미터와 여러 노드 그룹에 대한 구성 파일을 사용하여 하나를 만들 수 있습니다.

eksctl의 최신 버전을 설치하려면 eksctl 웹사이트의 설치를 참조하세요.

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

$ eksctl version

그런 다음 사용하려는 파라미터 유형에 따라 다음 해결 방법 중 하나를 선택합니다.

해결 방법

기본 파라미터로 노드 그룹 생성

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

    $ eksctl create nodegroup --cluster=yourClusterName --name=yourNodeGroupName --region yourRegionName
  2. 기본 파라미터는 다음과 같습니다.

    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 명령을 실행한다.

  3. 새 노드 그룹이 클러스터에 연결되었는지 확인하고 노드가 클러스터에 연결되었는지 확인하려면 다음 명령을 실행합니다.

    $ 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
    
    

사용자 지정 파라미터로 노드 그룹 생성

  1. 구성 파일에서 새 노드 그룹의 파라미터를 정의합니다. 예를 들면, 다음과 같습니다.

    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 웹사이트의 노드 그룹을 참조하세요.

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

    $ eksctl create nodegroup --config-file=yourConfigFileName
  3. (선택 사항) 2단계의 명령은 AWS CloudFormation 스택을 배포하여 EKS 노드 그룹을 위한 리소스를 생성합니다. 스택 상태를 확인하려면 CloudFormation 콘솔에 액세스하고 AWS 리전이 클러스터의 리전과 동일한지 확인합니다.
    스택이 CREATE_COMPLETE 상태가 되면 eksctl 명령이 성공적으로 종료됩니다.

  4. 새 노드 그룹이 클러스터에 연결되었는지 확인하고 노드가 클러스터에 연결되었는지 확인하려면 다음 명령을 실행합니다.

    $ 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
AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음