Notice
Recent Posts
Recent Comments
Today
Total
05-02 00:04
Archives
관리 메뉴

Jeongchul Kim

AWS EKS 클러스터 구축 본문

AWS

AWS EKS 클러스터 구축

김 정출 2023. 6. 15. 19:56

AWS EKS 클러스터 구축

 

Amazon EKS란?

  • Amazon EKS(Elastic Kubernetes Service)

Amazon EKS 구성도

  • VPC
  • Amazon EKS

 

 

Amazon eksctl

eksctl은 관리형 Kubernetes 서비스 인 EKS에서 클러스터를 생성하기위한 간단한 CLI 도구입니다. Go로 작성되었으며 CloudFormation을 사용하여 단 하나의 명령으로 몇 분 안에 기본 클러스터를 만듭니다. 이것은 EKS를 구성하기 위한 도구 이며, AWS 관리콘솔에서 제공하는 EKS UI, CDK, Terraform, Rancher 등 다양한 도구로도 구성이 가능합니다.

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 자동완성 - bash

. <(eksctl completion bash)

eksctl version

 



다음 진행에 앞서 제가 생성한 Repo를 다운받아 클러스터 생성을 진행하겠습니다.

cd ~/environment

git clone https://github.com/KimJeongChul/aws-eks

앞서 Cloudformation 구성에서 생성한 VPC 자원들에 대한 고유의 자원 값을 추출해서, Cloud9 내에서 환경 변수에 저장합니다. 아래 Shell을 실행합니다.

cd ~/environment/aws-eks/script/

./env_aws_eks_vpc.sh eks-jckim

클러스터 정보를 생성합니다.

./create_eks_cluster_info.sh

cat ~/environment/aws-eks/eks.yaml

 

vpc/subnet id , KMS CMK keyARN 등이 다를 경우 설치 에러가 발생합니다. 또한 Cloud9의 publickeyPath의 경로도 확인하고, 반드시 다음 단계를 진행하기 전에 다시 한번 Review 합니다.

생성된 eksctl yaml 파일을 dry-run을 실행시켜서 확인해 봅니다.

eksctl create cluster --config-file=/home/ec2-user/environment/aws-eks/eks.yaml --dry-run

EKS 클러스터 생성합니다.

eksctl create cluster --config-file=/home/ec2-user/environment/aws-eks/eks.yaml

Amazon EKS 콘솔로 이동하여 Clusters로 이동하면 생성되는 클러스터를 확인할 수 있습니다.

 

CloudFormation 콘솔로 이동합니다. 생성되는 클러스터가 확인됩니다.

 

해당 스택 이름을 클릭하여 Events를 확인합니다. 생성이 완료되는 수십분 소요됩니다. 

완료가 되면 다음과 같이 CREATE_COMPLETE로 변경됩니다.

 

Amazon EKS 콘솔로 돌아와 해당 클러스터 이름을 클릭하여 상세 보기로 이동합니다.

 

Amazon EKS 클러스터의 상세 정보를 확인할 수 있습니다.

Cloud9 콘솔로 돌아와 다음의 명령어를 통해 kube config 파일 내용을 확인합니다. kube config 파일은 eksctl 클러스터 명령어 생성 시에 자동으로 파일이 생성됩니다.

cat ~/.kube/config

클러스터의 노드들을 확인해봅시다. Worker 노드들이 확인됩니다.

kubectl get node -o wide

Kubernetes에서 동작 중인 namespace 목록을 확인합니다.

kubectl get ns

kube-system namespace에서 동작 중인 pod들을 확인해봅니다.

kubectl get pod -nkube-system

 

다음은 k9s로 생성된 클러스터를 확인해봅니다.

k9s

EKS 콘솔 진입 시에 아래에 IAM 권한이 없는 팝업창을 확인할 수 있습니다. User의 권한을 Cloud9에서 추가해 줍니다.  

cloud9 콘솔로 이동하여 configmap 인증 정보를 수정합니다. aws-auth 파일을 확인해봅니다.

aws-auth를 수정합니다.

kubectl edit -n kube-system configmap/aws-auth

 

mapRoles 밑으로 mapUsers를 추가합니다.

echo $ACCOUNT_ID 명령어를 입력하고 해당 값을 username에 입력합니다.

mapUsers: |
   - userarn: arn:aws:iam::{account-id}:user/{username}
     username: {username}
     groups:
        - system:masters

저장을 하고 닫습니다. esc :wq

 

다시 EKS 콘솔로 돌아와 확인합니다.

루트 계정 또는 유저 계정에서 Resource 탭에서 k8s 클러스터에 대한 정보 확인이 가능합니다.

기존에 조회가 안되던 Nodes 정보도 확인됩니다.

Instance가 어느 AZ에 동작 중인지 확인을 하기 위해서는 EC2 콘솔로 이동하면 확인 가능합니다.

클러스터 구축이 완료가 되었습니다.
감사합니다.

Comments