[kubernetes] EKS Install

[kubernetes] EKS Install

■ 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

■ 관리 시스템(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

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

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

1)

$ curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.19.6/2021-01-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

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 검색 후 설치 상황 자세히 확인 가능

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

from http://twodeveloper.tistory.com/72 by ccl(A) rewrite - 2021-10-28 09:26:49