kubernetes
kops k8s 클러스터 관리도구
misankim
2023. 4. 10. 22:19
Kops로 k8s 설치하기
https://kubernetes.io/ko/docs/setup/production-environment/tools/kops/
Kops를 사용하여 AWS에서 Kubernetes 클러스터 관리
https://aws.amazon.com/blogs/compute/kubernetes-clusters-aws-kops/
GitHub kubernetes/kops
https://github.com/kubernetes/kops
공식 가이드
https://kops.sigs.k8s.io/getting_started/install/
kops 설치
curl -Lo 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
mv kops /usr/local/bin/kops
iam 권한 설정
kops 사용자에게 필요한 권한
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
인증 설정
프로파일 설정
aws configure
환경변수 세팅
export AWS_ACCESS_KEY_ID=$(aws configure get aws_access_key_id)
export AWS_SECRET_ACCESS_KEY=$(aws configure get aws_secret_access_key)
dns 구성
kops로 클러스터를 생성하려면 1차 도메인 혹은 2차 도메인이 필요
-> example.com
yum install -y jq
호스팅 영역 생성
ID=$(uuidgen) && \
aws route53 create-hosted-zone \
--name example.com \
--caller-reference $ID \
| jq .DelegationSet.NameServers
호스팅 영역 확인
aws route53 list-hosted-zones | jq '.HostedZones[] | select(.Name=="example.com.") | .Id'
클러스터 상태 저장을 위한 s3 버킷 설정
aws s3api create-bucket \
--bucket example-kops-kubernetes \
--region us-east-1
aws s3api put-bucket-versioning --bucket example-kops-kubernetes --versioning-configuration Status=Enabled
export KOPS_STATE_STORE=s3://example-kops-kubernetes
키 설정
~/.ssh/id_rsa.pub 파일에 퍼블릭키 준비
클러스터 생성
kops create cluster \
--name example.com \
--zones ap-northeast-2a \
--master-size t3a.medium \
--master-count 1 \
--node-size t3a.medium \
--node-count 2 \
--state s3://example-kops-kubernetes \
--yes
--yes 옵션 없이 생성만 먼저 한 경우 배포 진행
kops update cluster --name example.com --yes --admin
kops validate cluster --wait 10m
kubectl get nodes --show-labels
ssh -i ~/.ssh/id_rsa ubuntu@api.example.com
클러스터 상태 확인
kops validate cluster --state=s3://example-kops-kubernetes
마스터노드 ssh 접속
ssh -i ~/.ssh/id_rsa ubuntu@api.example.com
클러스터 수정
kops edit cluster
클러스터 정보 확인
kubectl cluster-info
클러스터 버전 업데이트
버전 참고
https://github.com/kubernetes/kops/blob/master/channels/stable
버전 업데이트 확인 및 적용
kops upgrade cluster \
--name example.com \
--state s3://example-kops-kubernetes \
--yes
클러스터 상태에 맞게 저장소 상태 업데이트
kops update cluster \
--name example.com \
--state s3://example-kops-kubernetes \
--yes
마스터/워커 노드 롤링 업데이트 수행
kops rolling-update cluster \
--name example.com \
--state s3://example-kops-kubernetes \
--yes
워커노드만 업데이트 하려면 --instance-group 옵션 추가
클러스터 삭제
kops delete cluster example.com --state=s3://example-kops-kubernetes --yes