khann's IT와 경제 블로그

반응형

마이크로서비스#4 - AWS에서 쿠버네티스 구축

 

 

 

1. 쿠버네티스(Kubernetes) 구축 방법


 

쿠버네티스(Kubernetes) 구축 방법은 크게 2가지로 클라우드(cloud) 환경과 온프레미스(On-premise)환경에서의 구축으로 나뉜다.

이번 포스트에서는 AWS(Amazon Web Service)를 이용한 구축을 진행하겠다.

 

 

 

 

2. 쿠버네티스 설치 툴(Kups), 쿠버네티스 컨트롤 도구(Kubectl), AWS cli 커맨더(awscli) 설치 하기


kups란 kubernetes operations의 약자로 클라우드(cloud)환경에서 쿠버네티스 설치를 자동화하여 도와주는 도구이다. 2019년 1월에는 AWS에서 지원하는 서비스로(as a aws service) Amazon EKS가 서울리전이 출시되었으며 kups대신 EKS로 설치하는 추세인것같다. 

 

 

 

kops 설치

1
2
3
wget -O kops https://github.com/kubernetes/kops/releases/download/$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -'"' -4)/kops-linux-amd64 
chmod +x ./kops sudo 
sudo ln -s ./kops /usr/local/bin/
cs

 

 

kubectl 설치

1
2
3
wget -O kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl 
chmod +x ./kubectl 
sudo ln -s ./kubectl /usr/local/bin/kubectl
cs

 

 

aws-cli 설치 (만약 구축을 진행하는 pc가 aws amazon linux라면 skip)

1
pip install awscli
cs

 

 

 

 

3. aws-cli를 이용하여 IAM계정을 생성하고 권한 부여


설치한 aws-cli를 이용하여 내  aws 콘솔에 접속하여 조작할 수 있다. 이때 접속을 하기위해 2가지 방법이 있는데, 쉽게 비유하자면 root계정 또는 일부 권한만 인가된 유저에 접속하는 방법이다.

여기서 일부권한만 인가된 유저를 IAM(Identity Access Management)라고 한다.

 

 

※ kubernetes구축 시 필요한 권한 목록

1
2
3
4
5
AmazonEC2FullAccess
AmazonRoute53FullAccess
AmazonS3FullAccess
IAMFullAccess
AmazonVPCFullAccess
cs

 

 

IAM계정 생성 및 권한 부여

1
2
3
4
5
6
7
8
9
10
11
aws iam create-group --group-name kops
 
aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonEC2FullAccess --group-name kops
aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonRoute53FullAccess --group-name kops
aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess --group-name kops
aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/IAMFullAccess --group-name kops
aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonVPCFullAccess --group-name kops
 
aws iam create-user --user-name kops
aws iam add-user-to-group --user-name kops --group-name kops
aws iam create-access-key --user-name kops
cs

 

'aws iam create-access-key --user-name kops'를 실행하면 아래처럼 'AccessKeyId'와 'SecretAccessKey'가 나오는데 잘 기록해둔다.

 

 

AccessKeyID와 SecretAccessKey 등록

1
aws configure
cs

 

 

 

4. Cluster State Storage 및 DNS 설정


만약 kops가 1.6.2버전 이상이라면 DNS 설정은 구지 하지 않아도 된다.

Cluster State Storage로 AWS의 'Amazon S3'를 사용하기 때문에  S3의 Bucket을 생성해줘야 한다.

 

 

Bucket 생성

1
2
3
4
aws s3api create-bucket \
    --bucket bucketname \
    --region ap-northeast-2 \
    --create-bucket-configuration LocationConstraint=ap-northeasts-2
cs

 

※ Bucket 생성시 주의 할 점으로는 --bucket 뒤에 들어가는 bucketname은 global name이다.

이게 무슨말이냐면 Amazon S3의 모든 Bucket name이 Unique한 이름을 가지기 때문에 중복되면 안된다.

' BucketAlreadyExists ~~~ bucket name is not availabl ' 등의 에러가 뜨면 unique한 이름을 찾을 때까지 시도해본다. 

 

 

클러스터를 이전상태로 롤백할 수 있도록 Bucket의 버전 관리 설정

1
2
3
aws s3api put-bucket-versioning \
    --bucket prefix-example-com-state-store \
    --versioning-configuration Status=Enabled
cs

 

 

 

 

5. 쿠버네티스 클러스터 (Kubernetes Cluster) 생성


환경변수 설정

1
2
export NAME=아까생성한bucket이름.k8s.local
export KOPS_STATE_STORE=s3://아까생성한bucket이름
cs

 

지역확인

1
aws ec2 describe-availability-zones --region ap-northeast-2
cs

 

 

 

쿠버네티스 클러스터 생성

1
2
3
4
kops create cluster --zones ap-northeast-2a ${NAME}
kops edit cluster ${NAME}
kops update cluster ${NAME} --yes
 
cs

 

 

약간의 시간이 지나고 아래처럼 수행할 옵션을 볼 수 있다.

 

이제 aws홈페이지 인스턴스 페이지를 통해서 생성된 인스턴스의 확인이 가능하다.

 

또한, kops validate cluster로 확인 할 수 있다.

 

 

 

 

피드백은 언제나 환영입니다.

반응형

이 글을 공유합시다

facebook twitter googleplus kakaostory naver