[MSA Prepare] k8s 명령형 접근법

·2024년 5월 2일
0

MSA Prepare

목록 보기
6/21
post-thumbnail

명령형(Imperative) 접근법?

  • 원하는 상태를 만들기 위해 필요한 동작을 지시하는 방식
  • CLI 환경에서 kubectl을 이용하여 사용
  • deployment를 만들어서 Pod를 실행시키고 Service를 통해서 외부로 노출시켜서 접근하여 보자!

시작하기

  • 내가 만든 이미지를 사용하기 위해서는 docker hub에 이미지를 올려야 한다. 이전글에서 올린 이미지를 사용해서 k8s를 사용하자!

minikube 실행하기

minikube start
minikube dashboard
  • 다음을 실행하고 출력하는 주소를 통해 dashboard에 접속할 수 있다.

deployment 만들고 확인하기

  • 다음과 같은 명령으로 deployment를 생성하자
  • image의 경우 docker hub에 있어야 한다.
  • pod가 오류로 종료시 다시 알아서 시작한다!
kubectl create deployment [name] --image=[imgNames s1,s2,]
kubectl create deployment restful-api --image=xoo0608/spring-data-rest
  • 다음명령으로 확인이 가능하다.
kubectl get deployments
kubectl get pods

  • READY: 1/1의 경우 1개중에 1개가 제대로 실행중이라는 것
  • 대시보드를 통해서도 확인이 가능하다.

서비스 만들기

  • 외부에서 접속을 하기 위해서는 서비스를 만들어야 한다.
  • 서비스 만들기
kubectl expose deployment [deployment_name] --type=LoadBalancer --port=8080
kubectl expose deployment [deployment_name] --type=ClusterIP --port=8080
kubectl expose deployment [deployment_name] --type=NodePort --port=8080
  • 다음과 같은 방식들이 가능하다.
  • ClusterIP: 클러스트 내부의 다른 Pod들이 접근할 수 있도록 IP를 할당, 내부 IP만을 할당하기 때문에 외부에서 접근은 불가능하다.
  • NodePort: 고정 포트로 서비스를 노출한다. 외부에서 접근이 가능하며, ClusterIP서비스를 자동 생성함
  • LoadBalancer: 외부에 서비스를 노출한다. 로드 밸런싱을 수행한다.
  • 노드 밸런싱의 방식으로 서비스를 노출해보자
kubectl expose deployment restful-api --type=LoadBalancer --port=8080
  • 다음 명령을 통해서 확인이 가능하다.
kubectl get services

접속하기

minikube service restful-api

Scaling

  • pod를 복제하여서 실행할 수 있다.
  • 다음 명령어를 통해 수행해보자
kubectl scale deployment/[name] --replicas=3
  • 다음을 통해 확인해보자!
kubectl get pods
  • 쿠버네티스는 알아서 로드밸런싱을 수행한다.

삭제하기

kubectl delete deployment [name]
kubectl delete service [name]
  • 다음과 같이 삭제할 수 있다.
profile
백엔드 개발자가 꿈인 컴공과

0개의 댓글

관련 채용 정보