본문 바로가기
  • 클라우드야 나랑 친해지자!
서버/Docker&Kubernetes

kops로 AWS에서 Kubernetes 설치

by 정민규 2021. 4. 28.
반응형

수업을 듣고 배운 내용과 연습한 내용을 정리하였습니다

개인 공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.

 

잘못된 부분이 있거나 질문사항은 댓글로 남겨주시면 성심성의껏 답변해드리겠습니다. 감사합니다!


 

교재 <시작하세요! 도커/쿠버네티스 - 용찬호 지음>를 토대로 실습을 진행하였습니다.

 

 

 

* 실습요약

1. kops 및 kubectl 실행 바이너리 내려받기

2. AWS 사용자 생성, 정책 연결 및 AWS CLI 설정

3. S3 버킷에 쿠버네티스 클러스터의 설정 정보 저장

4. 쿠버네티스 클러스터 옵션 변경

5. 쿠버네티스 클러스터 생성

 

 

 

 

* kops

 

kops는 클라우드 플랫폼에서 쉽게 쿠버네티스를 설치할 수 있도록 도와주는 도구입니다.

kubeadm은 쿠버네티스를 설치할 서버 인프라를 직접 마련해야 하지만, kops는 서버 인스턴스와 네트워크 리소스 등을 클라우드에서 자동으로 생성해 쿠버네티스를 설치합니다. 따라서 클라우드 플랫폼의 세부적인 리소스에 익숙하지 않더라도 쉽게 서버 인프라를 프로비저닝해 쿠버네티스를 설치할 수 있다는 것이 특징입니다.

 

 

 

 

 

 

 

1. kops 및 kubectl 실행 바이너리 내려받기

 

가장 먼저 kops를 실행하기 위한 바이너리 파일과 쿠버네티스 명령줄인 kubectl을 내려받습니다.

(맥 OS X에서 kops를 사용하려면 다음 명령어 중 linux를 darwin으로 변경합니다.)

#wget -O kops https://github.com/kubernetes/kops/releases/download/v1.18.0/kops-linux-amd64
#chmod +x ./kops
#mv ./kops /usr/local/bin/
#wget -O kubectl \
http://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/amd64/kubectl
#chmod +x kubectl
#mv kubectl /usr/local/bin/

 

 

 

 

2. AWS 사용자 생성, 정책 연결 및 AWS CLI 설정

 

2번의 내용은 저자의 블로그를 참고하시기 바랍니다.

 

blog.naver.com/alice_k106/221342005691

 

[강좌] kops 사용을 위해 AWS에서 Role을 포함한 IAM 사용자 추가하기

이번 글에서는 kops를 사용하기 위해 AWS에서 IAM 사용자를 추가하는 방법을 설명합니다. 1. AWS ...

blog.naver.com

 

 

 

 

 

3. S3 버킷에 쿠버네티스 클러스터의 설정 정보 저장

 

kops는 부커네티스의 설정 정보를 S3 버킷에 저장하기 때문에 kops가 사용할 S3 버킷을 미리 설정해 줘야 합니다.

아래의 첫 번째 명령어는 S3 버킷을 생성하고, 두 번째 명령어는 해당 S3 버킷의 버저닝을 기록하도록 설정합니다.

 

아래 내용 중 mingyu-k8s-bucket 은 버킷명으로 자신이 원하는 버킷명으로 설정하면 됩니다.

#aws s3api create-bucket \
--bucket mingyu-k8s-bucket \
--create-bucket-configuration LocationConstraint=ap-northeast-2

#aws s3api put-bucket-versioning \
--bucket mingyu-k8s-bucket \
--versioning-configuration Status=Enabled

 

 

 

쿠버네티스의 클러스터 이름과 S3 버킷 이름을 셸(shell) 환경 변수로서 설정합니다. S3 버킷의 이름은 여러분이 위에서 별도로 설정했던 고유한 이름이어야 합니다.

#export NAME=mycluster.k8s.local
#export KOPS_STATE_STORE=s3://mingyu-k8s-bucket

 

 

 

다음 명령어를 실행해 쿠버네티스를 설치할 EC2 인스턴스에 배포될 SSH 키를 생성합니다.

셸의 현재 디렉토리에 비밀키와 공개키가 생성될 것입니다.

#ssh-keygen -t rsa -N "" -f ./id_rsa

 

 

 

 

다음 명령어를 입력해 클러스터의 설정 파일을 생성합니다. 네트워크 플러그인은 다른 것을 사용해도 크게 상관은 없지만 여기에서는 calico를 사용해 설치합니다.

#kops create cluster \
--zones ap-northeast-2a \
--networking calico \
--ssh-public-key ./id_rsa.pub \
$NAME

 

 

 

 

 

 

 

4. 쿠버네티스 클러스터 옵션 변경

 

쿠버네티스를 생성하기 위한 각종 옵션을 수정할 차례입니다. 마스터와 워커 노드의 인스턴스 타입이나 워커 노드의 개수 등을 조절할 수 있습니다.

 

 

다음은 워커 노드의 옵션을 수정해보겠습니다.

#kops edit ig nodes --name $NAME

 

 

노드의 개수는 maxSize와 minSize를 수정해 변경할 수 있고, 워커의 CPU와 메모리 크기는 인스턴스 타입을 수정해 변경할 수 있습니다.

3개의 워커 노드를 생성하도록 maxSize와 minSize를 3으로 변경하고, 프리 티어를 사용하기 위해 machineType을 t2.micro로 변경합니다.

 

 

 

 

다음은 마스터 노드의 설정을 변경해보겠습니다.

#kops edit ig master-ap-northeast-2a --name $NAME

 

 

마스터 노드는 1개의 노드만을 사용하되, 인스턴스의 타입을 워커와 동일한 종류인 t2.micro로 변경합니다.

 

 

 

 

 

 

 

 

5. 쿠버네티스 클러스터 생성

 

이로써 kops로 쿠버네티스르 생성하기 위한 준비가 완료됐습니다. 마지막으로 다음 명령어를 입력하면 kops가 자동으로 서버 인스턴스, 네트워크 리소스 등을 생성해 쿠버네티스를 설치합니다.

#kops update cluster --yes $NAME

 

 

 

쿠버네티스 클러스터의 준비에는 약 5~10분 정도가 소요됩니다. 쿠버네티스 설치 진행 상황은 kops validate cluster 명령어를 사용해 확인할 수 있습니다.

#kops validate cluster

 

 

 

잠시 후, 다음 명령어로 노드의 목록과 쿠버네티스 버전을 출력해 설치가 정상적으로 완료됐는지 확인합니다.

STATUS가 NOT Ready인 경우 5분정도 기다리면 Ready로 변경됩니다. 

#kubectl get nodes

 

 

 

 

실제로 AWS EC2 인스턴스의 목록을 확인하면 RUNNING 으로 변경되는 것을 확인하실 수 있습니다.

 

 

 

 

 

지금까지 kops를 사용해 쿠버네티스를 사용할 수 있는 환경을 구성해봤습니다!

서버 인프라가 자동으로 생성돼서 kubeadm보다 더욱 편리하게 설치할 수 있었습니다~

앞으로 이어지는 실습도 kops로 진행하면 좋을 것 같다는 생각입니다.

 

 

+추가로

kops를 사용해 쿠버네티스를 사용하다보니 InternalError 및 TLS HandShake timeout 등 오류가 계속해서 발생하여 진행이 어려웠습니다..

오류가 뜨는 이유와 해결법은 자세히 모르겠지만 구글링에 따르면 일종의 버그라고 합니다.

v1.18.0 버전에서만 그런건지 최신버전을 설치해보던지 다시 kubeadm 방식으로 진행해야될 것 같다는 생각입니다...ㅜ

 

 

 

 

마지막으로, kops로 생성한 쿠버네티스 클러스터를 삭제하려면 다음 명령어를 입력합니다.

단, S3에 저장된 쿠버네티스 클러스터의 설정 파일은 삭제되지 않기 때문에 별도로 삭제해야 합니다.

#kops delete cluster $NAME --yes

 

 

반응형

'서버 > Docker&Kubernetes' 카테고리의 다른 글

도커로 가상 비트코인 거래하기  (3) 2021.05.09
AWS에서 kubeadm으로 Kubernetes 시작하기  (0) 2021.05.04
Docker Compose  (0) 2021.04.22
Docker Swarm  (0) 2021.04.20
Dockerfile 작성 및 빌드  (0) 2021.04.16

댓글