본문 바로가기

DevOps/[AWS]

[AWS EKS] AWS EKS 구축하기 -2

반응형

 

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

 

마무리

 

 

 

 

 

 

 

 

 

 

 

-퍼가실 때는 출처를 꼭 같이 적어서 올려주세요!

 

반응형