Amazon Web Service (AWS)/EKS

[EKS] EKS Cluster 구축

Ssemi-Column 2022. 8. 1. 15:11
728x90

참고 (https://github.com/237summit/Kubernetes-on-AWS/blob/main/LAB_k8s_install)


  • EKS control plane과 worker node로 구성되어 있습니다. (위 사진에서 Amazon Web Services 가 Cluster)
  • 왼쪽 Clients를 EC2 서버로 구축하고 그 안에 aws , eksctl, kubectl 등을 설치합니다.
    • aws → amazon IAM 계정을 연동
    • eksctl → EKS control plane을 구성
    • kubectl → kubenetes를 관리
  • VPC와 Subnet, Worker Node를 어떻게 구성해야 하나 찾아 봤었는데 CloudFormation을 통해 간단하게 구성 할 수 있었습니다.
  • 하나의 AZ (Availabilliy zone) 안의 subnet에 EC2 서버 (worker node) 에서 서비스를 구동하는데 몇 개의 WorkerNode를 만들지 조금 더 공부 해보겠습니다
  • 각 Worker node 마다 EC2 인스턴스가 생성되기 때문에 Cluster 비용 외에 추가적인 EC2 비용이 들어가는 것 같습니다.
  •  

💪EKS Cluster 구축하기

  1. IAM 계정으로 로그인하여 Clients 용 EC2 서버 구축하기
    1. 이름 및 태그 : eks-management-system
    2. os이미지 : Amazon Linux
    3. keypair : .ppk로 새로 생성 (기존에 있는 경우 기존 keypair 사용, eks-management-keypairs)
    4. 인스턴스 시작
    5. 인스턴스 선택 - 세부 정보 - 키 페어 이름 선택 - 키 페어 생성 버튼 선택후 pem 파일 생성

2. EC2 인스턴스에서 aws, eksctl, kubectl 설치하기

2-1 aws 설치 (https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-cliv2-linux.html)

//AWS CLI 관리툴인 aws 설치하기
$sudo yum update  //yum update
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install
$ aws --version

2-2 eksctl 설치 (https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/eksctl.html)

//EKS설치/운영 툴인  eksctl 설치
$ 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-3 kubectl 설치 (https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/install-kubectl.html)

 

kubectl 설치 - Amazon EKS

kubectl 설치 Kubernetes는 클러스터 API 서버와 통신하기 위해 kubectl이라는 명령줄 유틸리티를 사용합니다. 많은 운영 체제 패키지 관리자에서 kubectl 이진 파일을 제공하며, 흔히 이 방법이 수동 다운

docs.aws.amazon.com

//kubernetes 관리툴인 kubectl 설치
  $ curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.21.2/2021-07-05/bin/linux/amd64/kubectl
  $ chmod +x ./kubectl
  $ mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
  $ echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
  $ kubectl version --short --client

3. aws 관리를 위해 aws 계정 등록 (IAM에서 만든 eks-manager 계정 사용)

$ aws configure
  AWS Access Key ID [None]: .csv에 있는 Access Key Id
  AWS Secret Access Key [None]: .csv에 있는 Secret access key
  Default region name [None]: 리전 (서울 : ap-northeast-2)
  Default output format [None]: 빈값

이전 글에서 작성한 IAM 계정을 등록하면 됩니다.

4. CloudFormation을 이용하여 Cluster 구축

  $ eksctl create cluster \
    --name eks-ex \                         //사용할 eks 이름
    --region ap-northeast-2 \               //사용할 리전 (ap-northeast-2 는 서울) 
    --with-oidc \                           //OIDC에 관한 인증 내용인데 아직 잘 모르겠습니다.
    --ssh-access \                          //ssh 인증가능
    --ssh-public-key eks-management-pems \ //위에서 설정한 pem 파일 등록
    --nodes 3 \                             //worker node 갯수.. 협의가 필요합니다.
    --node-type t3.medium \                 //각 노드 사이즈?
    --node-volume-size=20 \                 //노드 용량 default로 80Gb가 설정되어 있다고 합니다.
    --managed                               //실행
  • 10~20분 정도 있으면 클러스터가 생성이 됩니다.
  • 내부망 등의 VPC 설정을 하려면 --vpc-private-subnets=<Private 서브넷ID AZ-a,c>  를 사용하여 VPC를 지정한다

  • aws의 CloudFormation에서 이벤트를 확인 해보면 클러스터를 생성하고 VPC 설정 NATGateway, Subnet 등을 구축하는 것을 확인 할 수 있습니다.

5. 구축 확인

$ kubectl get nodes

  • 실제 EC2 인스턴스를 확인 해보면 eks-management-system을 제외하고 3개의 EC2 인스턴스 (NodeWorker)가 생성되었다.
728x90
반응형
LIST