on
[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