[AWS] EKS 관리형 노드 그룹 생성하기(eksctl)

HYEOB KIM·2022년 5월 6일
0

aws

목록 보기
6/62

본 글은 AWS 공식 문서를 참고하여 작성 되었습니다.

EKS 관리형 노드 그룹

Linux 노드 그룹 생성하기

노드 그룹을 생성하는 명령어는 eksctl create nodegroup 입니다.

아래 명령을 실행해 노드 그룹 생성 명령과 관련된 옵션들을 확인할 수 있습니다.

eksctl create nodegroup --help

예를 들어, 아래와 같이 명령해서 노드를 생성해보겠습니다.

eksctl create nodegroup \
  --cluster my-cluster \
  --name test-nodes \
  --node-type t3.medium \
  --nodes 3 \
  --nodes-min 1 \
  --nodes-max 4 \
  --ssh-access \
  --ssh-public-key hyeob-test-keypair

아래와 같은 결과값들이 출력됩니다.

2022-05-06 18:36:49 [ℹ]  eksctl version 0.95.0
2022-05-06 18:36:49 [ℹ]  using region ap-northeast-2
2022-05-06 18:36:49 [ℹ]  will use version 1.21 for new nodegroup(s) based on control plane version
2022-05-06 18:36:50 [ℹ]  nodegroup "test-nodes" will use "" [AmazonLinux2/1.21]
2022-05-06 18:36:50 [ℹ]  using EC2 key pair %!q(*string=<nil>)
2022-05-06 18:36:51 [ℹ]  1 nodegroup (test-nodes) was included (based on the include/exclude rules)
2022-05-06 18:36:51 [ℹ]  will create a CloudFormation stack for each of 1 managed nodegroups in cluster "my-cluster"
2022-05-06 18:36:51 [ℹ]  
2 sequential tasks: { fix cluster compatibility, 1 task: { 1 task: { create managed nodegroup "test-nodes" } } 
}
2022-05-06 18:36:51 [ℹ]  checking cluster stack for missing resources
2022-05-06 18:36:51 [ℹ]  cluster stack has all required resources
2022-05-06 18:36:51 [ℹ]  building managed nodegroup stack "eksctl-my-cluster-nodegroup-test-nodes"
2022-05-06 18:36:51 [ℹ]  deploying stack "eksctl-my-cluster-nodegroup-test-nodes"
2022-05-06 18:36:52 [ℹ]  waiting for CloudFormation stack "eksctl-my-cluster-nodegroup-test-nodes"
2022-05-06 18:37:22 [ℹ]  waiting for CloudFormation stack "eksctl-my-cluster-nodegroup-test-nodes"
2022-05-06 18:38:03 [ℹ]  waiting for CloudFormation stack "eksctl-my-cluster-nodegroup-test-nodes"
2022-05-06 18:39:20 [ℹ]  waiting for CloudFormation stack "eksctl-my-cluster-nodegroup-test-nodes"
2022-05-06 18:40:21 [ℹ]  waiting for CloudFormation stack "eksctl-my-cluster-nodegroup-test-nodes"
2022-05-06 18:40:56 [ℹ]  waiting for CloudFormation stack "eksctl-my-cluster-nodegroup-test-nodes"
2022-05-06 18:40:56 [ℹ]  no tasks
2022-05-06 18:40:56 [✔]  created 0 nodegroup(s) in cluster "my-cluster"
2022-05-06 18:40:56 [ℹ]  nodegroup "test-nodes" has 3 node(s)
2022-05-06 18:40:56 [ℹ]  node "ip-192-168-27-134.ap-northeast-2.compute.internal" is ready
2022-05-06 18:40:56 [ℹ]  node "ip-192-168-56-14.ap-northeast-2.compute.internal" is ready
2022-05-06 18:40:56 [ℹ]  node "ip-192-168-80-29.ap-northeast-2.compute.internal" is ready
2022-05-06 18:40:56 [ℹ]  waiting for at least 1 node(s) to become ready in "test-nodes"
2022-05-06 18:40:56 [ℹ]  nodegroup "test-nodes" has 3 node(s)
2022-05-06 18:40:56 [ℹ]  node "ip-192-168-27-134.ap-northeast-2.compute.internal" is ready
2022-05-06 18:40:56 [ℹ]  node "ip-192-168-56-14.ap-northeast-2.compute.internal" is ready
2022-05-06 18:40:56 [ℹ]  node "ip-192-168-80-29.ap-northeast-2.compute.internal" is ready
2022-05-06 18:40:56 [✔]  created 1 managed nodegroup(s) in cluster "my-cluster"
2022-05-06 18:40:56 [ℹ]  checking security group configuration for all nodegroups
2022-05-06 18:40:56 [ℹ]  all nodegroups have up-to-date cloudformation templates

참고:
위 명령을 실행하기 전에 키 페어를 생성하고 키 페어 이름을 --ssh-public-key 옵션에 넣습니다.

아래와 같이 노드가 3개 생성된 것을 확인할 수 있습니다.

관리형 노드에 대한 유의 사항

  • 클러스터를 생성한 IAM 엔티티(사용자 또는 역할)는 kubectl을 사용하여 Kubernetes API 서버를 호출할 수 있는 유일한 IAM 엔티티입니다. 다른 사용자가 클러스터에 액세스할 수 있도록 하려면 클러스터 액세스에 대한 권한을 부여해주어야 합니다.
  • 모든 Kubernetes 서비스 계정에 IAM 역할을 할당하여 포드에 필요한 최소 권한만 부여하고, 클러스터의 포드가 현재 AWS 리전 검색과 같은 다른 이유로 Amazon EC2 인스턴스 메타데이터 서비스(IMDS)에 액세스할 필요가 없는 경우 IMDS에 대한 포드의 액세스를 차단합니다.
    => 작업 노드로부터 인스턴스 프로파일에 대한 접근 제한에서 Restrict access to the instance profile assigned to the worker node 부분을 참고하세요.
  • AWS Outposts, AWS Wavelength 또는 AWS Local Zones이 사용 설정되어 있는 AWS 리전에는 관리형 노드를 생성할 수 없습니다. 대신 자체 관리형 노드를 생성할 수 있습니다.
  • EKS 노드는 표준 Amazon EC2 인스턴스입니다. 일반 Amazon EC2 가격을 기준으로 요금이 청구됩니다.
profile
Devops Engineer

0개의 댓글