쿠버네티스
kops를 이용해 AWS에 쿠버네티스 설치
GTC
2021. 4. 28. 10:42
kops는 클라우드 환경에서 쿠버네티스를 설치하도록 도와주는 도구이며 설치하는 방법은 다음 2가지 방법이 있다
- VMware에 Ubuntu를 설치하고 원격으로 AWS에서 K8s를 실행하는 방법(이번 실습 방법)
- AWS에 Amazon Linux2를 설치하고 AWS에 K8s를 실행하는 방법
kops 실행 파일 내려받기
# wget -O kops https://github.com/kubernetes/kops/releases/download/v1.18.0/kops-linux-amd64
다운로드 받은 파일에 실행권한 추가
# chmod +x ./kops
/usr/local/bin은 스스로 설치한 명령어를 사용할 수 있도록 하는 장소이다
(Linux 저장소에 있는 것 이외의 것을 설치했을 때)
# mv ./kops /usr/local/bin
쿠버네티스 명령줄(kubectl) 내려받기
# 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
<AWS CLI 설치하기>
현재 버전의 AWS CLI 다운로드
# curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
압축 해제
# unzip awscliv2.zip
설치 프로그램 실행
# ./aws/install -i /usr/local/aws-cli -b /usr/local/bin
설치 확인
# aws --version
<AWS CLI 설정하기>
AWS CLI 설치가 완료되었으면 프로그래밍 방식으로 액세스하는 사용자를 생성한다
"Administrator Access" 정책을 연결한다
생성한 사용자의 [보안 자격 증명]에 들어가서 액세스 키를 생성한다
cmd창을 켜고 "aws configure"를 입력하고 액세스 키, 비밀키, 리전, 데이터 출력 포맷(JSON)을 차례대로 입력한다
액세스 키/비밀 키가 잘 설정되었는지 확인하기 위해 EC2 인스턴스의 목록을 나열하는 아래의 명령어를 사용해 테스트한다
# aws ec2 describe-instances
쿠버네티스 설정 정보를 저장할 S3 생성
# aws s3api create-bucket --bucket <버킷명> --create-bucket-configuration LocationConstraint=ap-northeast-2
# aws s3api put-bucket-versioning --bucket <버킷명> --versioning-configuration Status=Enabled
쿠버네티스 클러스터 이름과 S3 버킷 이름을 셸 환경변수로 설정
# export NAME=mycluster.k8s.local
# export KOPS_STATE_STORE=s3://<버킷명>
쿠버네티스에 설치할 EC2 인스턴스에 배포될 SSH키 생성
# ssh-keygen -t rsa -N "" -f ./id_rsa
클러스터 설정 파일 생성(리전, VPC, SSH키 등)
# kops create cluster --zones ap-northeast-2a --networking calico --ssh-public-key ./id_rsa.pub $NAME
쿠버네티스 클러스터 옵션 변경
워커 노드의 인스턴스 타입 및 워커노드 개수 수정
# kops edit ig nodes --name $NAME
마스터 노드 설정 변경
# kops edit ig master-ap-northeast-2a --name $NAME
쿠버네티스 클러스터 생성
kops가 자동으로 서버 인스턴스, 네트워크 리소스 등을 생성해 쿠버네티스를 설치한다
# kops update cluster --yes $NAME
클러스터 생성 진행 상황 확인
# kops validate cluster
클러스터 삭제
kops로 생성한 쿠버네티스 클러스터를 삭제한다
# kops delete cluster $NAME --yes