연재 시리즈

EKS 스터디 - 1주차 3편 - eksctl로 EKS생성

악분 2023. 4. 16. 16:53
반응형

 

1. eksctl란?

AWS에서 공식으로 지원하는 eks관리 CLI입니다. kubectl처럼 eks를 관리하고 싶으신 분들에게 매우 좋습니다. eksctl의 단점은 eks만 관리합니다. aws다른 리소스를 관리하지 못합니다.

 

개인적으로 eks에 익숙하지 않으면, eksctl로 eks를 관리하는 것이 매우 좋은 선택인 것 같습니다.

 

 

2. 준비

2.1 eksctl 설치

eksctl은 실행파일로 제공됩니다. 공식문서에서 제공해준 명령어 그대로 입력하면 실행파일 다운로드 받습니다.

출처: https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/eksctl.html
# linux기준
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin
eksctl version

 

2.2 IAM USER

Administrator policy를 갖는 IAM USER가 필요합니다. 스터디 원만한 진행을 위해 Administrator를 사용했습니다.

 

3. EKS 설치

eksctl create명령어로 쉽게 EKS를 설치할 수 있습니다. 약 15분정도 소요됩니다.

 

3.1 설정파일 생성

EKS를 설치할 때 EKS설정을 argument 또는 설정파일로 넘길 수 있습니다. 저는 설정파일로 EKS를 설정했습니다.

참고자료: https://eksctl.io/usage/creating-and-managing-clusters/
cat << EOF > cluster.yaml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: baisc-cluster # eks 이름
  region: ap-northeast-2
  version: "1.24" # 쿠버네티스 버전

vpc:
  cidr: "10.0.0.0/16" # eks클러스터에서 사용할 VPC의 CIDR

managedNodeGroups:
  - name: node-group-a
    instanceType: t3.medium
    desiredCapacity: 2
    volumeSize: 20
    privateNetworking: true
EOF

 

설정파일은 EKS메타정보, 네트워크(VPC), 워커노드(Auto Scaling group)으로 구성됩니다.

  1. EKS메타정보는 쿠버네티스 버전, 설지 리전 등을 설정합니다.
  2. VPC는 AWS VPC를 설정합니다. VPC설정에 AWS Subnet이 설정됩니다. 그리고 클러스터 네트워크 정보가 설정됩니다.
  3. 워커노드를 설정합니다. EKS는 EC2 인스턴스와 Fargate를 사용할 수 있습니다. 이 글에선느 EC2 인스턴스를 사용했고 Managed Node group을 선택했습니다. Managed Node group은 Auto scaling group으로 워커노드가 관리됩니다.

 

 

3.2 EKS 생성

eksctl create명령어로 EKS를 설치합니다.

eksctl create cluster -f cluster.yaml

 

eksctl은 cloudformation으로 동작합니다.

 

설치시간은 약 15분정도 소요됩니다. 정상적으로 설치되 “EKS cluster … ready”라는 메세지가 출력됩니다.

 

3.3 kubectl 명령어 사용

EKS가 설치되면 kubectl명령어를 사용할 수 있습니다. kubecontext는 자동으로 추가됩니다.

kubectl config get-contexts

 

pod전체 목록을 조회해보세요!

kubectl get pod

 

EKS가 설치되면 쿠버네티스 네트워킹을 위한 pod가 자동으로 생성됩니다. 관련된 내용은 EKS애드온 공식문서를 참조하시길 바랍니다.

EKS애드온 문서: https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/eks-add-ons.html

출처:&nbsp;https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/eks-add-ons.html

 

 

 

3. EKS 대시보드 찾아가기

EKS대시보드는 AWS console에서 “Elastic kubernetes Service”에서 볼 수 있습니다.

 

EKS대시보드에는 현재 EKS목록을 보여줍니다. EKS 정보를 더 알고 싶으면 원하는 클러스터를 클릭하면 됩니다.

 

주의사항은 AWS Administrator policy를 갖더라도 EKS를 생성한 계정이 아니면 EKS대시보드 정보가 제한적으로 조회됩니다.

 

4. 네트워크 구성 살펴보기

네트워크 구성은 “Networking”탭에서 확인할 수 있습니다.

 

4.1 EKS 네트워크 살펴보기

EKS네트워크 구조는 AWS블로그에 자세히 설명되어 있습니다. 간단히 요약하면 control-plane과 worker node모두 AWS VPC를 사용합니다.

 

control-plane VPC는 AWS가 직접관리하고 worker node VPC는 사용자가 관리합니다. 그리고 control-plane이 worker node에 접근할 때 미리 만들어 놓은 EKS ENI를 사용합니다.

 

4.2 API server접근 유형

EKS API server접근 유형은 “Network”탭에서 확인할 수 있습니다. default는 public으로 설정되어 있어 누구나 외부에서 EKS API server에 접근할 수 있습니다.

 

API서버주소는 “Overview”메뉴에서 확인할 수 있습니다.

 

웹 브라우저로 API서버주소로 접근하면 API서버 응답을 볼 수있습니다.

 

4.3 VPC와 Subnet

EKS가 사용하는 VPC와 Subnet정보는 “Networking”탭에서 확인할 수 있습니다.

 

VPC정보는 eksctl로 EKS클러스터를 만들 때 설정할 수 있습니다. 아무런 정보를 입력하지 않으면 디폴트로 subnet 6개, Nat gateway, Internet gateway를 생성합니다.

 

5. 워커노드 설정 살펴보기

worker node는 “Compute”탭에서 확인할 수 있습니다.

 

5.1 Managed Node Group

이 예제에서 EKS를 설치할때, managedNodeGroups이 추가되었습니다.

 

Managed node group은 AWS가 알아서 워커 노드를 관리하는 개념으로 Auto Scaling group을 사용합니다.

 

따라서, 이 예제에서 생성한 EKS 워커노드는 auto scaling group으로 생성된 EC2 인스턴스입니다.

 

5.2 security group

security group은 cluster 전체에 적용하는 security group입니다.

 

그림으로 표현하면 아래와 같습니다. EKS클러스터 전체에 적용됩니다.

 

클러스터에 전체에 적용되야하므로, cluster security group은 managed worker node의 security group에 사용됩니다.

 

cluster security group은 2가지 규칙이 디폴트로 설정되어 있습니다. 첫 번째 규칙은, 클러스터간 통신을 위한 규칙입니다. 두 번째 규칙은 unmanaged node를 위한 규칙입니다.

 

6. 클러스터 삭제

eksctl delete cluster -f cluster.yaml

반응형