본문 바로가기
Infra System

Kops로 Kubernetes cluster 구축하기

by kellis 2020. 10. 13.

AWS에서 Kops로 Kubernetes 클러스터 구축하기 를 참고한 글이며, 구체적인 설명은 링크를 확인하시기 바랍니다. 

 

0. AWS EC2 생성

ec2 이미지로 linux 2 AMI를 사용하였습니다. 

ec2 인스턴스에 접속하여 다음과 같은 명령을 실행합니다.

 

1. kops 설치

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 mv ./kops /usr/local/bin/

 

2. kubectl 설치

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 mv ./kubectl /usr/local/bin/kubectl

 

3. IAM 유저 생성

ec2 console의 IAM 서비스에 접속합니다. kops라는 그룹을 만들고, 그 그룹 내에 kops-user라는 사용자를 만듭니다.

사용자가 생성될 때, access key id와 secret access key가 제공되는데 이를 꼭 저장해두어야 합니다.

 

4. aws configure

이 인스턴스에서 kops를 이용해 새로운 인스턴스를 생성하게 되므로 aws 명령을 이용합니다. 따라서 현재 인스턴스에 aws 정보를 미리 설정해두어야 합니다.

aws configureAWS Access Key ID [None]: <Your access key id>
AWS Secret Access Key [None]: <Your secret access key>
Default region name [None]: ap-northeast-2
Default output format [None]:

위와 같이 제대로 적용되었는지 아래 명령어로 확인합니다.

aws ec2 describe-instances
aws iam list-users

 

5. 클러스터 정보를 저장할 S3 bucket을 생성하고 Versioning을 활성화.

bucket을 생성할 때 자꾸 사용할 수 없는 이름이라고 에러가 발생했는데, 이는 bucket name이 해당 region에서 유일해야 하기 때문입니다. 

aws s3api create-bucket \
    --bucket <bucket name> \
    --region ap-northeast-2 \
    --create-bucket-configuration LocationConstraint=ap-northeast-2
aws s3api put-bucket-versioning \
    --bucket <bucket name> \
    --versioning-configuration Status=Enabled

 

6. 환경 변수 설정

export AWS_ACCESS_KEY_ID=$(aws configure get aws_access_key_id)
export AWS_SECRET_ACCESS_KEY=$(aws configure get aws_secret_access_key)

작업을 편리하게 하기 위해 아래 환경 변수도 생성합니다. Gossip 기반 클러스터를 사용할 계획이기 때문에 클러스터 이름은 .k8s.local로 끝나야 합니다. (예: cluster.k8s.local)

export NAME=<cluster name>
export KOPS_STATE_STORE=s3://<bucket name>

 

7. SSH 키페어 생성

ssh-keygen 명령을 통해 만들 수 있습니다.

 

8. cluster 생성

kops create cluster --zones ap-northeast-2c ${NAME}

위 명령을 수행했을 때, secret을 생성하라는 메시지가 나오므로 다음 명령을 통해 secret을 생성해 줍니다.

kops create secret --name cluster.k8s.local sshpublickey admin -i ~/.ssh/id_rsa.pub

이는 클러스터링될 인스턴스를 생성할 때 사용할 keypair를 지정해주기 위함입니다.

 

9. cluster 실행

kops update cluster ${NAME} --yes

cluster를 생성만 한다고 실제로 인스턴스가 생기지 않으며, 위의 실행 명령을 통해 인스턴스를 만들 수 있습니다.

 

10. cluster 확인

kops validate cluster            # 클러스터 상태 확인
kubectl get nodes --show-labels  # 노드 목록 가져오기
kubectl -n kube-system get po    # kube-system 네임스페이스 안의 Pod 목록

 

11. cluster 삭제 

kops delete cluster --name=k8s.cluster.site --yes

단, 클러스터 설정이 제대로 되어 있지 않은 상태라면, 삭제도 이루어지지 않음(환경변수 등)

 


Conclusion

 

위의 과정을 거치면, ec2 console에서 인스턴스가 생성된 것을 확인할 수 있습니다.

인스턴스에 접근하기 위해 username은 ec2-user가 아니라 admin으로 지정해야 합니다.

'Infra System' 카테고리의 다른 글

mongodb install on ec2  (0) 2020.10.13
mariadb cluster install on kubernetes  (0) 2020.10.13
kafka cluster installation on kubernetes  (0) 2020.10.13
jenkins install on kubernetes  (0) 2020.10.13
helm installation  (0) 2020.10.13

댓글