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