DevOps/kubernete

[kubernetes] Kops를 이용해 AWS에 클러스터 셋업

soohey 2022. 5. 24. 17:02

Kops를 통해 쿠버네이트 클러스터를 설정합니다.

 

 

리눅스에 kubectl 설치하기

https://kubernetes.io/ko/docs/tasks/tools/install-kubectl-linux/

$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
$ curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
$ echo "$(<kubectl.sha256) kubectl" | sha256sum --check
$ sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
$ sudo chmod +x /usr/local/bin/kubectl
  • 최신 릴리즈를 다운로드합니다.
  • 바이너리를 다운로드합니다. kubectl 바이너리를 체크섬 파일을 통해 검증합니다.
  • kubectl을 설치합니다.
  • 권한을 줍니다.

 

클러스터 만들기 전에 ssh 키 생성하기

 

$ ssh-keygen -f .ssh/id_rsa
$ cat .ssh/id_rsa.pub
  • 생성한 ssh키로 클러스터에 로그인합니다.
  • ssh-keygen은 새 키를 생성합니다.
  • {id_rsa.pub}는 공개 키이며 인스턴스에 업로드됩니다. 
  • {id_rsa}는 개인 키이며 개인키를 이용해 인스턴스에 로그인할 수 있습니다.

 

 

$ sudo mv /usr/local/bin/kops-linux-amd64 /usr/local/bin/kops
$ kops create cluster --name=soohey.tk --state=s3://kops-state3245 --zones=ap-northeast-2a --node-count=2 --nnode=size=t2.micro --master-size=t2.micro --dns-zone=soohey.tk
$ kops update cluster soohey.tk --yes --admin --state=s3://kops-state3245

kops는 한 개의 마스터, 두 개의 노드를 가진 클러스터를 생성하고 이름을 지정합니다. 

name은 이름, state는 버킷이름, zones는 aws 리전을 뜻합니다.

kops update cluster하여 클러스터를 시작합니다.

$ cat ~/.kube/config
//새 클러스터에 로그인할 때 필요한 인증서와 암호입니다.

https://api.soohey.tk 가 우리가 만든 서버입니다.

 

$ kubectl get node
//노드입니다.

 

 

 

 

 

kops를 사용하는 쿠버네티스 클러스터가 작동하는지 테스트합니다.

 

 

$ kubectl run hello-minikube --image=k8s.gcr.io/echoserver1.4 --port=8080
// hello-minikube 배포 생성하기
$ kubectl expose deployment hello-minikube --type=NodePort
// service hello-minikube exposed
$ kubectl get services
// hello-minikube 서비스 보기

kubectl expose로 외부에서 접근할 수 있도록 서비스를 노출시킵니다.

NodePort는 모든 노드에 있는 포트를 노출해 서비스에 연결시킵니다. 하지만 마스터 노드에는 연결할 수 없습니다.

 

EC2로 이동하여 running중인 인스턴스를 확인합니다.

 

 

 

서비스에 노출된 port를 인바운드 규칙 추가하기

source는 0.0.0.0/0 또는 myIP를 위해서만 열 수 있습니다.

 

 

$ kops delete cluster soohey.tk --state=s3://kops-state3245 --yes

클러스터를 삭제합니다.