본문 바로가기
개발/Docker & Kubernetes

[k8s study] 1장. 쿠버네티스 소개

by 달사쿠 2020. 8. 6.
반응형

본 포스트는 조나단바이에르, 쿠버네티스 기초다지기 3/e (에이콘)을 참고하여 정리하였습니다. 해당 포스트에서 쿠버네티스에 대한 지식을 얻기에는 부족한 부분이 많아, 쿠버네티스에 대해서 이해를 하려면 아래 포스트를 참고해주세요.

 

쿠버네티스 (Kubernetes) 한번에 정리하기

컨테이너 오케스트레이션 도구로, Google에서 개발한 오픈소스 프로젝트입니다. 본 포스트에서는 컨테이너 오케스트레이션이 무엇인지, 쿠버네티스의 주요 개념과 용어, 아키텍처 등에 대해서

dalsacoo-log.tistory.com


AWS를 사용한 쿠버네티스 실행

CLI 설정

1. 설치 문서

 

macOS에 AWS CLI 버전 2 설치 - AWS Command Line Interface

설치 관리자의 아무 위치에서나 Cmd+L을 눌러 설치에 대한 디버그 로그를 볼 수 있습니다. 이렇게 하면 로그를 필터링하고 저장할 수 있는 로그 창이 열립니다. 로그 파일도 /var/log/install.log에 자��

docs.aws.amazon.com

2. 설정 문서

 

AWS CLI 구성 - AWS Command Line Interface

AWS에서는 모든 수신 요청이 암호화 서명되어야 합니다. AWS CLI에서 이 작업을 수행합니다. "서명"에는 날짜/시간 스탬프가 포함됩니다. 따라서 컴퓨터의 날짜 및 시간이 올바르게 설정되어야 합��

docs.aws.amazon.com

액세스 키 ID 및 보안 액세스키

$ aws configure --profile [profile 명]
AWS Access Key ID [None]: [발급받은 Key ID]
AWS Secret Access Key [None]: [발급받은 Secret Key]
Default region name [None]: ap-northeast-2
Default output format [None]: json
$ brew update && brew install kops

IAM 설정

kops를 사용하기 위해서는 AWS에서 AmazonEC2FullAccess, AmazonRoute53FullAccess, AmazonS3FullAccess, IAMFullAccess, AmazonVPCFullAccess 권한을 가진 IAM 역할을 만들어야 한다.

$ 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

 

SecretAccessKey와 AccessKeyID를 복사해 CLI 구성

$ export AWS_ACCESS_KEY_ID=$(발급받은 AccessKEyID)
$ export AWS_SECRET_ACCESS_KEY=$(발급받은 SecretAccessKey)

클러스터 상태 저장소

클라우드에 리소스를 구축하기 때문에 클러스터 형상 정보를 전용 S3 버킷에 저장해야 한다. 버킷 이름 앞부분에 고유한 값을 추가하면 된다. 참고로 kops가 버킷 위치를 강제하고 있기 때문에 버킷은 us-east-1리전에 만들어져야 한다.

$ aws s3api create-bucket \
--bucket [고유한 버킷명(예. gsw-k8s-3-state-store)] \
--region us-east-1

 

클러스터를 이전 상태로 롤백이 가능하도록 설정

$ aws s3api put-bucket-versioning --bucket [버킷명] --versioning-configuration Status=Enabled

 

.k8s.local 로컬 설정을 사용해 클러스터의 DNS설정을 간소화하기위해서, 로컬환경을 준비한다.

$ export NAME=[DNS이름].k8s.local
$ export KOPS_STATE_STORE=s3://[버킷명]
$ aws s3api crreate-bucket --bucket [버킷명] --region us-east-1

만약

$ kops create cluster --zones us-east-2a ${NAME}

를 입력하고 클러스터를 만드는데 kops create secret --name [버킷명] sshpublickey admin -i ~/.ssh/id_rsa.pub와 같이 문구가 뜬다면 ssh key 생성문서를 참고하여 생성하고, DNS주소를 입력하면 된다. 이후에

$ kops update cluster gwsk8s.k8s.local --yes

를 실행하여 클러스터 생성이 제대로 완료되었는지 확인하면 된다.

 

마지막으로 kubectl get nodes를 실행하여 master와 node가 제대로 실행되는지 확인하자

 

참고 및 출처:

https://kops.sigs.k8s.io/getting_started/aws/

https://twofootdog.tistory.com/m/43?category=845777

반응형

댓글