아마존 상에 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 사이트는 아래와 같다.
리눅스의 경우
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 환경을 구성하게 된다.
- 네트워크 환경 구성
구성 내용은
- 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 정보를 확인 할 수 있어야 한다.
'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 |