eksctl을 사용하여 EKS 클러스터 생성

4850 단어 awskubernetes
이 기사에서는 eksctl을 사용하여 EKS 클러스터를 생성할 것입니다.

공식 문서에서 Amazon Elastic Kubernetes Service(EKS)는 AWS 클라우드에서 Kubernetes를 실행하기 위한 관리형 Kubernetes 서비스입니다. 클라우드에서 Amazon EKS는 컨테이너 예약, 애플리케이션 가용성 관리, 클러스터 데이터 저장 및 기타 주요 작업을 담당하는 Kubernetes 제어 플레인 노드의 가용성과 확장성을 자동으로 관리합니다. Amazon EKS를 사용하면 AWS 인프라의 모든 성능, 규모, 안정성 및 가용성은 물론 AWS 네트워킹 및 보안 서비스와의 통합을 활용할 수 있습니다.

참조: https://aws.amazon.com/eks/

eksctl은 Amazon EKS의 공식 CLI입니다. Amazon의 EC2용 관리형 Kubernetes 서비스인 EKS에서 클러스터를 생성하고 관리하기 위한 간단한 CLI 도구입니다. Go로 작성되었으며 CloudFormation을 사용하고 Weaveworks에서 만들었습니다.

참조: https://eksctl.io/

여기서 로컬 환경 설정에 사용된 Linux 배포판은 Ubuntu 20.04입니다.


필수 도구를 설치합니다.

$ sudo apt update

$ sudo apt install curl unzip


AWS CLI를 다운로드하고 설치합니다.

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

$ unzip awscliv2.zip

$ ./aws/install -i /usr/local/aws-cli -b /usr/local/bin

$ aws --version


eksctl을 다운로드하고 설치합니다.

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

$ sudo install eksctl /usr/local/bin/eksctl

$ eksctl version


kubectl을 다운로드하고 설치합니다.

$ curl -LO https://dl.k8s.io/release/v1.23.7/bin/linux/amd64/kubectl

$ sudo install kubectl /usr/local/bin/kubectl

$ kubectl version --client


액세스 키, 비밀 키, 리전 및 출력 형식으로 AWS CLI를 구성합니다.

$ aws configure
AWS Access Key ID [None]: xxxxxx
AWS Secret Access Key [None]: xxxxxx
Default region name [None]: us-east-1
Default output format [None]: yaml


아래 구성 파일을 사용하여 클러스터를 생성합니다.
클러스터 생성을 완료하는 데 약 15분이 소요됩니다.

$ cat dev-eks.yml



apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: dev-cluster
  region: us-east-1
  version: "1.23"

vpc:
  cidr: 10.0.0.0/16

managedNodeGroups:
- name: dev-node
  amiFamily: Ubuntu2004
  instanceType: t3.micro
  desiredCapacity: 2



$ eksctl create cluster -f dev-eks.yml


위의 클러스터 생성 명령을 실행하면 백엔드에서 CloudFormation을 사용하여 필요한 리소스를 생성합니다. 아래 이미지에서 컨트롤 플레인과 노드 그룹을 프로비저닝하기 위해 생성된 두 개의 CloudFormation 스택을 볼 수 있습니다.



EKS 콘솔에서 클러스터 상태를 볼 수 있으며 활성 상태이고 모든 노드가 준비 상태에 있습니다.



워크로드 배포를 위해 클러스터에 연결합니다.

$ aws eks --region us-east-1 update-kubeconfig --name dev-cluster

$ kubectl get nodes
NAME                          STATUS   ROLES    AGE   VERSION
ip-10-0-26-165.ec2.internal   Ready    <none>   18m   v1.23.7
ip-10-0-34-91.ec2.internal    Ready    <none>   18m   v1.23.7


Nginx 포드를 생성하고 상태를 확인합니다.

$ kubectl run nginx --image=nginx:1.23 --port 80
pod/nginx created

$ kubectl get pods
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          64s


Nginx 포드를 LoadBalancer 서비스에 노출합니다.

$ kubectl expose pod nginx --name=nginx-lb --port=80 --target-port=80 --type=LoadBalancer
service/nginx-lb exposed

$ kubectl get svc
NAME         TYPE           CLUSTER-IP     EXTERNAL-IP                                                              PORT(S)        AGE
kubernetes   ClusterIP      172.20.0.1     <none>                                                                   443/TCP        35m
nginx-lb     LoadBalancer   172.20.61.15   a9afa907a47bb4ec3b77cb2d59663b49-598454773.us-east-1.elb.amazonaws.com   80:32165/TCP   41s


EXTERNAL-IP 섹션에 있는 URL을 복사하고 브라우저에서 확인하십시오.



eksctl 명령을 사용하여 클러스터를 삭제할 수도 있습니다.

$ eksctl delete cluster -f dev-eks.yml --wait


지금은 그게 다야, 고마워!

좋은 웹페이지 즐겨찾기