본문 바로가기

AWS/인프라 구축

AWS EKS 설치: CLI로 설치하는 방법(yaml 파일)

반응형

 

 

1. k8s managed Server로 사용할 EC2 인스턴스 생성

private zone에 생성

 

 

2. k8s managed Server로 사용할 인스턴스 생성

참고: https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-cliv2-linux.html

sudo apt-get install -y unzip
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws  --version

 

 

 

 

3. eksctl 설치(EKS설치/운영 툴)

참고: https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/eksctl.html

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

 

 

 

4. kubectl 설치(k8s 관리툴)

참고: https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/install-kubectl.html

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=$HOME/bin:$PATH
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
kubectl version --short --client

 

 

 

 

+ AWS IAM 생성 & 엑세스 키 생성( root 계정으로 실습할거라면 건너뛰기)

 

사용자이름(User name*) : eks-manager-user
기존 정책(Attach existing policies directly) : AdministratorAccess

 

 

 

 

6.  aws 계정등록

위에서 IAM 계정을 만들었다면 해당 계정의 Access Key와 Secret Access Key 사용

 

aws configure
cat .aws/config
cat .aws/credentials
aws sts get-caller-identity

 

 

7. EKS 구성: yaml 파일 생성 및 실행

참고: https://catalog.us-east-1.prod.workshops.aws/workshops/9c0aa9ab-90a9-44a6-abe1-8dff360ae428/ko-KR/50-eks-cluster/100-launch-cluster

 

yaml 파일 생성

vi cluster.yaml

 

아래 코드 추가:

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
  name: cluster-in-existing-vpc
  region:  ap-northeast-2
vpc:
  subnets:
    private:
      ap-northeast-2c: { id: 서브넷ID }
      ap-northeast-2a: { id: 서브넷ID }
managedNodeGroups: # 클러스터의 노드 그룹 생성
  - name: ng-1-workers # 클러스터의 노드 그룹명
    labels: { role: workers }
    instanceType: t2.small # 클러스터 워커 노드의 인스턴스 타입
    desiredCapacity: 2 # 클러스터 워커 노드의 갯수
    privateNetworking: true
    ssh: # ssh 접근 허용
      publicKeyName: 키페어
      allow: true
      sourceSecurityGroupIds: ['보안그룹ID'] #원격 액세스 권한 허용 보안그룹id
  - name: ng-2-builders # 클러스터의 노드 그룹명
    labels: { role: builders }
    instanceType: t2.small
    desiredCapacity: 2
    privateNetworking: true
    ssh:
      publicKeyName: 키페어이름
      allow: true
      sourceSecurityGroupIds: ['보안그룹ID']
iam:
  withOIDC: true

 

 

 

yaml 파일 실행(약 20분 소요)

eksctl create cluster -f cluster.yaml

 

 

 

8. 생성 확인

Cloudformation, EKS, EC2에서 확인 가능

 

Cloudformation

 

 

EKS

 

EC2

 

 

CLI 명령어로도 확인

kubectl get nodes

 

 

8. CLI 명령어 자동완성 기능 추가

source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

 

 

 

 

9. Nginx 배포 테스트: nginx 컨테이너 5개 배포, 로드밸런서 서비스 실행

 

컨테이너 배포

kubectl create deployment webtest --image=nginx:1.14 --port=80 --replicas=5

 

파드 확인

kubectl get pods -o wide

 

 

로드밸런서 실행

kubectl expose deployment webtest --port=80 --type=LoadBalancer

 

 

 

위 파란 박스(external-ip)로 접속 확인

 

 

 

 

 


 

+ EKS 클러스터 삭제

 

방법1: yaml 파일

eksctl delete cluster -f cluster.yaml

 

 

 

 

방법2: 클러스터 이름

eksctl delete cluster --name <클러스터명>

 

 

 

반응형

'AWS > 인프라 구축' 카테고리의 다른 글

AWS EC2 인스턴스에 RDS 연결하는 방법  (0) 2023.06.05
AWS EC2: Nginx, Tomcat 연동  (2) 2023.06.01
AWS EC2 CLI 설치  (0) 2023.05.25
AWS EC2 Nginx 설치(Amazon Linux 2, Ubuntu)  (0) 2023.05.25
AWS EC2 Docker 설치  (0) 2023.05.25