쿠버네티스(Kubernetes) 구축 방법은 크게 2가지로 클라우드(cloud) 환경과 온프레미스(On-premise)환경에서의 구축으로 나뉜다.
이번 포스트에서는 AWS(Amazon Web Service)를 이용한 구축을 진행하겠다.
kups란 kubernetes operations의 약자로 클라우드(cloud)환경에서 쿠버네티스 설치를 자동화하여 도와주는 도구이다. 2019년 1월에는 AWS에서 지원하는 서비스로(as a aws service) Amazon EKS가 서울리전이 출시되었으며 kups대신 EKS로 설치하는 추세인것같다.
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 -d '"' -f 4)/kops-linux-amd64
chmod +x ./kops sudo
sudo ln -s ./kops /usr/local/bin/
|
cs |
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 |
1
|
pip install awscli
|
cs |
설치한 aws-cli를 이용하여 내 aws 콘솔에 접속하여 조작할 수 있다. 이때 접속을 하기위해 2가지 방법이 있는데, 쉽게 비유하자면 root계정 또는 일부 권한만 인가된 유저에 접속하는 방법이다.
여기서 일부권한만 인가된 유저를 IAM(Identity Access Management)라고 한다.
※ kubernetes구축 시 필요한 권한 목록
1
2
3
4
5
|
AmazonEC2FullAccess
AmazonRoute53FullAccess
AmazonS3FullAccess
IAMFullAccess
AmazonVPCFullAccess
|
cs |
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'가 나오는데 잘 기록해둔다.
1
|
aws configure
|
cs |
만약 kops가 1.6.2버전 이상이라면 DNS 설정은 구지 하지 않아도 된다.
Cluster State Storage로 AWS의 'Amazon S3'를 사용하기 때문에 S3의 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한 이름을 찾을 때까지 시도해본다.
1
2
3
|
aws s3api put-bucket-versioning \
--bucket prefix-example-com-state-store \
--versioning-configuration Status=Enabled
|
cs |
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로 확인 할 수 있다.
피드백은 언제나 환영입니다.
RISC-V #3 - 가상화를 통한 RISC-V 부팅 실습 (2) | 2019.07.29 |
---|---|
마이크로서비스#3 - 쿠버네티스란 무엇인가? (0) | 2019.07.27 |
마이크로서비스#2 - 가상화 컨테이너기술에 대한 이해 (0) | 2019.07.22 |
RISC-V #2 - RISC-V와 ARM 명령어 셋 비교 (0) | 2019.07.19 |
마이크로서비스#1 - 마이크로서비스 아키텍처 이해 (0) | 2019.07.18 |