티스토리 뷰

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

최종 업데이트 날짜: 2019년 11월 22일

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

간략한 설명

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

해결 방법

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

1.    eksctl을 설치합니다.

=> https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html

 

https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html

Getting Started with eksctl

docs.aws.amazon.com

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

 

$ eksctl version

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

 

 

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

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

 

eksctl create cluster --name myeks --nodes 4 --region eu-west-1 

[root@ip-10-0-0-222 bin]# ./eksctl create cluster --name myeks --nodes 4 --region eu-west-1
[ℹ]  eksctl version 0.13.0
[ℹ]  using region eu-west-1
[ℹ]  setting availability zones to [eu-west-1b eu-west-1a eu-west-1c]
[ℹ]  subnets for eu-west-1b - public:192.168.0.0/19 private:192.168.96.0/19
[ℹ]  subnets for eu-west-1a - public:192.168.32.0/19 private:192.168.128.0/19
[ℹ]  subnets for eu-west-1c - public:192.168.64.0/19 private:192.168.160.0/19
[ℹ]  nodegroup "ng-f22a868f" will use "ami-0b9d2c11b47bd8264" [AmazonLinux2/1.14]
[ℹ]  using Kubernetes version 1.14
[ℹ]  creating EKS cluster "myeks" in "eu-west-1" region with un-managed nodes
[ℹ]  will create 2 separate CloudFormation stacks for cluster itself and the initial nodegroup
[ℹ]  if you encounter any issues, check CloudFormation console or try 'eksctl utils describe-stacks --region=eu-west-1 --cluster=myeks'
[ℹ]  CloudWatch logging will not be enabled for cluster "myeks" in "eu-west-1"
[ℹ]  you can enable it with 'eksctl utils update-cluster-logging --region=eu-west-1 --cluster=myeks'
[ℹ]  Kubernetes API endpoint access will use default of {publicAccess=true, privateAccess=false} for cluster "myeks" in "eu-west-1"
[ℹ]  2 sequential tasks: { create cluster control plane "myeks", create nodegroup "ng-f22a868f" }
[ℹ]  building cluster stack "eksctl-myeks-cluster"
[ℹ]  deploying stack "eksctl-myeks-cluster"

 

 

참고: 기본적으로 새 노드 그룹은 제어 평면에서 설치한 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 apiVersion: eksctl.io/v1alpha5 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을 통해 두 개의 노드 그룹이 표시됩니다.

댓글