EKS setup and make clustering

아마존 상에 kubernetes를 사용하게 하는 cli를

  • eks

라고 할 수 있다.

eks를 사용하기 위해서는 2가지 환경이 선행 되어야 한다.

  • aws cli 설치 :

2021.02.12 - [AWS] - AWS CLI EC2 사용법

  • kubectl 설치 : kubeadm은 설치 하지 않아도 된다.

2021.03.04 - [Software활용] - kubernetes install on ubuntus with Hyper-V

이 2가지가 설치 되어있다는 전제로 EKS를 setup하고 AWS에 cluster를 구성하려고 한다.

공식 eks 사이트는 아래와 같다.

github.com/weaveworks/eksctl

 

weaveworks/eksctl

The official CLI for Amazon EKS. Contribute to weaveworks/eksctl development by creating an account on GitHub.

github.com

리눅스의 경우

curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/latest_release/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp  

sudo mv /tmp/eksctl /usr/local/bin

명령을 통해서 설치를 진행하면 된다.

윈도우는 chocolatey를 통한 설치가 필요하다.

- chocolatey install eksctl

eksctl이 설치 완료가 되면 

다음과 같이 yaml 파일을 만들어 보자.

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: EKS-cluster
  region: us-west-2

nodeGroups:
  - name: ng-1
    instanceType: t2.small
    desiredCapacity: 3
    ssh:
      publicKeyName: udacity

여기서 주의 할 것은 region과 publicKeyName이다.

region은 AWS를 사용할 위치, publicKeyName은 ec2에서 등록해 놓은 keypair이다.

파일 이름을 eks-cluster.yaml이라고 하자.

$ eksctl create cluster -f eks-cluster.yaml

이상이 발생 하지 않는다면, 아래와 같이 AWS Cloud formation을 통해서 네트워크 환경과 EC2 환경을 구성하게 된다.

- 네트워크 환경 구성

eks network 환경

 

구성 내용은 

  • VPC
  • public Router - Internet Gateway
  • Subnet Public 3개 - NAT Gateway (NATIP - EIP) 
  • PrivateRouter - 3개 -> subnet Public NAT Gateway 연결

정도가 된다.

 

- EC Instance 환경 구성

구성은 다음과 같다.

  • Security Group Egress : Api, Control pane
  • Security Group Ingress : Api
  • AutoScalingGroup
  • EC2 LaunchTemplate
  • Network Interface

완료 후 EC2 서비스를 확인 하면

3개의 EC2가 노드로 설정 되어 있는 것을 확인 할 수 있다.

$ eksctl get cluster
2021-03-13 17:55:16 [ℹ]  eksctl version 0.40.0
2021-03-13 17:55:16 [ℹ]  using region us-west-2
NAME                    REGION          EKSCTL CREATED
EKS-cluster      us-west-2       True

상기와 같이 cli를 통해서도 정상적인 Cluster가 설정 된 것을 확인 가능하다.

$ kubectl get nodes -o wide
NAME                                           STATUS   ROLES    AGE     VERSION              INTERNAL-IP      EXTERNAL-IP     OS-IMAGE         KERNEL-VERSION                  CONTAINER-RUNTIME
ip-192-168-11-74.us-west-2.compute.internal    Ready    <none>   8m12s   v1.18.9-eks-d1db3c   192.168.11.74    54.70.11.146    Amazon Linux 2   4.14.219-164.354.amzn2.x86_64   docker://19.3.13
ip-192-168-34-167.us-west-2.compute.internal   Ready    <none>   8m12s   v1.18.9-eks-d1db3c   192.168.34.167   54.245.58.138   Amazon Linux 2   4.14.219-164.354.amzn2.x86_64   docker://19.3.13
ip-192-168-94-45.us-west-2.compute.internal    Ready    <none>   8m9s    v1.18.9-eks-d1db3c   192.168.94.45    34.212.16.124   Amazon Linux 2   4.14.219-164.354.amzn2.x86_64   docker://19.3.13

만약에 kubectl이 정상적으로 작동 하지 않는다면

kubenetes api 서버에 대한 configuration이 정상적으로 완료 되지 못해서이다.

eksctl을 통해 cluster를 생성할 경우

$HOME/.kube/config

에 kubectl에서 사용하는 configMap 정보를 확인 할 수 있어야 한다.

728x90
반응형

'AWS' 카테고리의 다른 글

Kubernetes Docker alpine cpu memory process monitoring  (0) 2022.01.13
EKS cluster Management  (0) 2021.03.13
Cloud9 Ports 오픈 하기  (0) 2021.03.01
EC2 Volume Size Extension  (0) 2021.03.01
cloud 9 AWS Resources Tab  (0) 2021.02.27