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 |
댓글