DevOps/Kubernetes

[kubernetes] EKS Install

twoDeveloper 2021. 10. 27. 23:57

■ Amazon EKS 란?

· Kubernetes를 쉽게 실행할 수 있는 관리형 서비스

· AWS 환경에서 Kubernetes Control-plane 또는 node를 직접 설치, 운영 및 유지할 필요가 없음

· 여러 가용 영역(AZ) 에서 Kubernetes Control-plane을 실행하여 고가용성(HA)를 보장

· 비정상 Control-plane Instance를 자동으로 감지, 교체하며 자동화 된 버전 업그레이드 및 패치를 제공

 

참고 : https://aws-eks-web-application.workshop.aws/ko/10-intro/200-eks.html

 

Amazon EKS로 웹 애플리케이션 구성하기

Amazon EKS Amazon EKS에 대하여 Amazon EKS는 Kubernetes를 쉽게 실행할 수 있는 관리형 서비스입니다. Amazon EKS를 사용하시면 AWS 환경에서 Kubernetes 컨트롤 플레인 또는 노드를 직접 설치, 운영 및 유지할 필

aws-eks-web-application.workshop.aws


■ 관리 시스템(k8s-mng-system) 구축

1. aws-cli 관리툴 aws Install

· kubectl -> AWS Instance (k8s-mng-system) 내에서 실행 

· AWS 내부 전체를 관리할 수 있어야 한다.

 

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

 

Linux에서 AWS CLI 버전 2 설치, 업데이트 및 제거 - AWS Command Line Interface

결과에서 경고가 예상되지만 문제가 되지는 않습니다. 이 경고는 개인 PGP 키(보유한 경우)와 AWS CLI PGP 키 사이에 신뢰 체인이 없기 때문에 발생한 것입니다. 자세한 내용은 Web of trust를 참조하세

docs.aws.amazon.com

1) unzip Install

$ sudo apt-get install -y unzip

 

2) awscliv2.zip 가져오기

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

$ ls
---
awscliv2.zip

 

3) awscliv2.zip 풀기

$ unzip awscliv2.zip

 

4) aws install

$ sudo ./aws/install
---
You can now run: /usr/local/bin/aws --version

 

5) aws 버전 확인

$ aws --version
---
aws-cli/2.3.1 Python/3.8.8 Linux/5.4.0-1045-aws exe/x86_64.ubuntu.20 prompt/off

 

2. eks 툴인 eksctl Install

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

 

eksctl 명령줄 유틸리티 - Amazon EKS

GitTag 버전은 0.58.0 이상이어야 합니다. 그렇지 않은 경우 터미널 출력에서 설치 또는 업그레이드 오류가 있는지 확인하거나, 1단계의 주소를 https://github.com/weaveworks/eksctl/releases/download/0.58.0/eksctl_L

docs.aws.amazon.com

1) 

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

 

2)

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

 

3) eksctl 버전 확인

$ eksctl version
---
0.70.0

 

3. k8s 관리 툴인 kubectl Install

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

 

kubectl 설치 - Amazon EKS

Amazon EKS 클러스터 제어 영역과 마이너 버전이 하나 다른 kubectl 버전을 사용해야 합니다. 예를 들어, 1.20 kubectl 클라이언트는 Kubernetes 1.19, 1.20 및 1.21 클러스터로 작업해야 합니다.

docs.aws.amazon.com

1)

$ curl -o kubectl https://amazon-eks.s3-us-west-2.amazonaws.com/1.21.2/2021-07-05/bin/linux/amd64/kubectl

 

2) 실행이 가능하도록 실행 Permission 부여

$ chmod +x ./kubectl

 

3) kubectl을 사용할 수 있는 configuration file 이 저장될 수 있는 디렉터리 생성

$ mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin

 

4) PATH 가 항상 인식되도록 설정

$ echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc

 

5) kubectl 버전 확인

$ kubectl version --short --client
---
Client Version: v1.19.6-eks-49a6c0

 

■ Amazon EKS 구축

https://console.aws.amazon.com/iamv2/home#/home

 

https://console.aws.amazon.com/iamv2/home#/home

 

console.aws.amazon.com

1. IAM 계정 생성

※ kubectl 관리 시스템 (k8s-mng-system) 이 aws를 관리하려면 권한이 필요

1) dashboard -> user

 

2) '사용자 추가'

 

3)

사용자 세부 정보 설정

사용자 이름 : eks-mng-user

 

AWS 액세스 유형 선택 (체크)

-> 액세스 키 - 프로그래밍 방식 액세스

     AWS API, CLI, SDK 및 기타 개발 도구에 대해 액세스 키 ID  비밀 액세스 키 을(를) 활성화합니다.

 

4) 기존 정책 (Attach existing policies directly)

-> administrator 선택

 

5) 'Create User' 클릭

 

6) csv 다운로드 - 액세스 ID / 액세스 키 (노출 절대 x, 매우 중요 !!)

 

 

2. 관리 시스템(eks-mng-system) 에서 aws를 관리할 수 있도록 생성한 IAM 계정 (eks-mng-user) 등록

1) aws configure

$ 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]:

 

2) 잘 연결 되었는지 확인

$ aws sts get-caller-identity
---
{
    "UserId": "---------------",
    "Account": "---------------",
    "Arn": "---------------"
}

 

■ Amazon EKS 구성

※ 시간당 0.01USD 소비 !!

 

1) eksctl 명령어를 실행해서 Amazon EKS 클러스터 구성

$ eksctl create cluster \
    --name k8s-demo \
    --region ap-northeast-2 \
    --with-oidc \
    --ssh-access \
    --ssh-public-key [EC2 Instance Key] \
    --nodes 3 \
    --node-type t3.medium \
    --node-volume-size=20 \
    --managed

- aws 페이지에서 CloudFormation 검색 후 설치 상황 자세히 확인 가능

- --node-private-networking => 워커 노드를 모두 private subnet에 배치 시킴

 

2) 설치 완료 후 

$ kubectl get nodes

 

3) CLI 명령어 완성 기능 추가

$ source <(kubectl completion bash)

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

 

 

※ eks, ec2 모두 요금 부과, 따라서 삭제 하지 않으면 과금될 수 있음

1) 설치한 eks 삭제

$ eksctl delete cluster --name k8s-demo

 

참고 영상: https://www.youtube.com/watch?v=ZpiCoUP_FB4 

 

'DevOps > Kubernetes' 카테고리의 다른 글

[kubernetes] Argo CD Install  (0) 2021.12.22
[kubernetes] Helm으로 Jenkins Deploy  (1) 2021.11.12
[kubernetes] EKS Cluster 내부에 AWS RDS 구축  (0) 2021.11.10
[Kubernetes] AWS ALB Controller  (0) 2021.11.10
[k8s] kubespray 로 k8s Install  (0) 2021.10.23