
INTRO

1편에 이어 클러스터를 제어하기 위한 EC2 설정, 노드 생성등을 진행해 볼 것이다.

1. 기존에 생성한 클러스터를 제어하기 위한 EC2 구성
- 1편에서 생성한 클러스터를 제어하기 위한 EC2를 구성해 볼 것이다.
- EC2 인스턴스를 생성하는 방법에 대해선 생략하도록 하겠다.
- EC2에 접속하여 아래 목록들을 준비한다.
- aws cli
2022.09.26 - [Programming/[AWS]] - [AWS] Linux 환경에서 AWS CLI 설치
[AWS] Linux 환경에서 AWS CLI 설치
INTRO 1. 설치 및 테스트 - 하기 URL 참고하여 설치한다. https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html 최신 버전의 AWS CLI 설치 또는 업데이트 - AWS Command Line..
rangsub.tistory.com
- kubectl
// curl을 통해 kubectl 파일을 다운로드한다.
$ curl -o kubectl https://s3.us-west-2.amazonaws.com/amazon-eks/1.22.6/2022-03-09/bin/linux/amd64/kubectl
// 다운로드 된 파일의 권한을 실행 가능하도록 변경한다.
$ chmod +x ./kubectl
// 현재 경로에 다운로드된 kubectl 파일을 /usr/local/bin/kubectl 에 설치한다.
$ sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
// kubectl 버전 확인
$ kubectl version --client
참고 : https://kubernetes.io/ko/docs/tasks/tools/install-kubectl-linux/
리눅스에 kubectl 설치 및 설정
시작하기 전에 클러스터의 마이너(minor) 버전 차이 내에 있는 kubectl 버전을 사용해야 한다. 예를 들어, v1.25 클라이언트는 v1.24, v1.25, v1.26의 컨트롤 플레인과 연동될 수 있다. 호환되는 최신 버전
kubernetes.io
2. kube config 파일 생성
- kube config 파일 생성
- 아래 명령어를 통해 EKS를 제어하기 위한 config 파일이 /home/ubuntu/.kube/config 경로에 생성된다.
$ aws eks update-kubeconfig --region {my_region} --name {my_cluster_name}
- 하기 cat 명령을 통해 config 파일을 확인해보면, 자격 증명에 관련된 사항들이 저장된 것을 볼 수 있다
- 이 정보가 우리가 생성한 클러스터를 제어할 수 있는 정보들이므로, 보안에 신경써야 한다.
$ cat /home/ubuntu/.kube/config
- 아래 명령어를 통해 정상적으로 연결되었는지 확인할 수 있다.
$ kubectl get svc

참고 : https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/getting-started-console.html
Amazon EKS 시작하기 - AWS Management Console 및 AWS CLI - Amazon EKS
시스템은 추가한 Fargate 프로파일 레이블을 기반으로 2개의 노드를 생성하고 배포합니다. Fargate 노드에 적용할 수 없기 때문에 노드 그룹(Node Groups)에 아무 것도 표시되지 않지만 개요(Overview) 탭
docs.aws.amazon.com
3. Node 생성을 위한 Role 생성
- 노드의 유형에는 아래와 같이 다양한 유형이 있다.

- 이 포스팅에서는 관리형 노드 그룹을 생성해볼것이다.
- 관리형 노드 그룹은 EKS가 마스터노드 역할을 하고, 사용자는 워커노드만 관리하면 되는 형태로 제공된다.
- 노드를 생성하기 앞서 먼저 사용자 역할 하나를 추가해주어야한다.
- 포스팅 1편에서는 클러스터에 대한 역할을 하나 추가했었다.
- 이번에는 노드에 대한 역할 추가이다.
- node-role-trust-policy.json 파일을 하나 만들고 아래 내용을 저장한다.
$ mkdir role
$ cd role
$ touch node-role-trust-policy.json
$ vi node-role-trust-policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
- 이후 aws iam 명령어를 통해 역할을 생성한다.
$ aws iam create-role \
--role-name {myAmazonEKSNodeRole} \
--assume-role-policy-document file://"node-role-trust-policy.json"
- 생성한 node role에 관리형 정책들을 연결해준다.
$ aws iam attach-role-policy \
--policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy \
--role-name {myAmazonEKSNodeRole}
aws iam attach-role-policy \
--policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly \
--role-name {myAmazonEKSNodeRole}
aws iam attach-role-policy \
--policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy \
--role-name {myAmazonEKSNodeRole}
- 이후 콘솔-> iam -> 역할에서 생성한 역할을 들어가보면 아래와 같이 연결된 것을 확인할 수 있다.

4. Node 생성
- 이후 콘솔에서 EKS -> cluster -> 컴퓨팅 탭에서 노드 그룹 추가를 선택한다.


- 이름과 위에서 생성한 Role을 선택하고, 나머지 값들은 기본값으로 두고 다음 선택
- Role은 고유한 Role로 사용해야 한다고 한다.

- 이후 다음 페이지들은 전부 기본값으로 두고 생성 버튼까지 누른다.
- 노드 그룹 생성 후, 활성화 상태가 되면 기본값으로 설정한 노드 2개가 자동으로 생성된다.

- 연결된 EC2에서 아래 명령어를 통해 node 2개를 확인할 수 있다.
$ kubectl get node
마무리

-퍼가실 때는 출처를 꼭 같이 적어서 올려주세요!
'DevOps > [AWS]' 카테고리의 다른 글
| [AWS EKS] Application LoadBalancer(Ingress) IP주소 고정하기(ALB, NLB 사용) (0) | 2022.11.02 |
|---|---|
| [AWS EKS] AWS EKS 구축하기 -3 (0) | 2022.09.29 |
| [AWS EKS] AWS EKS 구축하기 -1 (0) | 2022.09.27 |
| [AWS] Linux 환경에서 AWS CLI 설치 (0) | 2022.09.26 |
| [AWS] EC2 인스턴스 생성해보기 (0) | 2021.12.16 |