본문 바로가기

(Dev)Ops

AWS EKS #1 - kubectl, eksctl 설치 후 기본 클러스터 배포해보기.

AWS EKS 를 테스트해보면서 누군가에게 도움이 될까 해서 기록을 남겨봅니다. 저는 맥을 사용하고 있습니다.

1. kubectl 설치.

kubectl 은 쿠버네티스 컨트롤을 위한 command line interface 입니다.

작성 시점의 kubectl 최신 버전이 1.21.1 이라 이것을 다운로드합니다.

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.21.2/2021-07-05/bin/darwin/amd64/kubectl

다운받은 바이너리에, 실행 옵션 x 를 붙인 후, $HOME/bin 으로 옮기고, path 를 겁니다.

chmod +x ./kubectl
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH

 

kubectl 버전을 확인해봅니다.

kubectl version --short --client

2. eksctl 설치

eksctl 은 아마존의 쿠버네티스 managed service 인 EKS 를 컨트롤하기 위한 command line interface 입니다.

brew 가 설치되어 있지 않다면, 아래 커맨드로 brew 부터 설치합니다.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

Weaveworks tap 을 설치합니다.

Weaveworks 가 왜 필요한가 보았더니 쿠버네티스 gitops 를 지원하는 도구라고 합니다. eks 에서 weaveworks 를 내장하고 있나봅니다.

brew tap weaveworks/tap

brew 를 이용하여 eksctl 을 설치합니다.

brew install weaveworks/tap/eksctl

만약 이미 설치가 되어 있다면, 아래 커맨드로 최신 버전으로 업데이트해줍니다.

brew upgrade eksctl && brew link --overwrite eksctl

설치가 잘 되어 있나 확인하기 위해, version 을 표시해봅니다.

eksctl version

Good.

 

3. my-cluster 만들어보기.

AWS CLI 가 설치되어 있고 구성되어 있어야 합니다.

그 상태에서 이 커맨드로 my-cluster 를 만들어봅니다.

eksctl create cluster \
--name my-cluster \
--region ap-northeast-2

4. 확인하기

클러스터 노드를 확인합니다.

kubectl get nodes

아래처럼 출력되는 것을 확인할 수 있습니다.

NAME                                                STATUS   ROLES    AGE     VERSION
ip-192-168-42-224.ap-northeast-2.compute.internal   Ready    <none>   2m29s   v1.21.5-eks-9017834
ip-192-168-79-227.ap-northeast-2.compute.internal   Ready    <none>   2m29s   v1.21.5-eks-9017834

클러스터에서 실행중인 워크로드를 확인합니다.

kubectl get pods --all-namespaces

EC2 로 EKS 를 설치한 경우 아래처럼 출력됩니다.

NAMESPACE     NAME                       READY   STATUS    RESTARTS   AGE
kube-system   aws-node-8tz6s             1/1     Running   0          7m
kube-system   aws-node-sj98m             1/1     Running   0          7m
kube-system   coredns-6dbb778559-5m7xg   1/1     Running   0          15m
kube-system   coredns-6dbb778559-qdfdz   1/1     Running   0          15m
kube-system   kube-proxy-dpsgh           1/1     Running   0          7m
kube-system   kube-proxy-jqxdd           1/1     Running   0          7m

fargate 로 EKS 를 설치한 경우 아래처럼 출력됩니다.

NAME                                                         STATUS   ROLES    AGE     VERSION
fargate-ip-192-168-122-42.ap-northeast-2.compute.internal    Ready    <none>   2m36s   v1.21.2-eks-06eac09
fargate-ip-192-168-152-226.ap-northeast-2.compute.internal   Ready    <none>   2m27s   v1.21.2-eks-06eac09