2.4 쿠버네티스로 컨테이너 관리 (68p)
컨테이너 구성에는 컨테이너 런타임이 있는 컴퓨터 필요.
쿠버네티스를 사용하면 오케스트레이션 구성이기 때문에 클러스터 필요.
※클러스터 Cluster
컨테이너화된 애플리케이션을 실행하는 작업자 머신(노드 node)의 집합.
모든 클러스터에서는 적어도 하나의 작업자 노드가 존재.
미니큐브 사용시 로컬 머신에서 쉽게 단일 노드 클러스터 생성 가능.
→ 프로덕션, 즉 실제 서비스 환경에서는 클라우드 공급자가 관리하는 클러스터 사용.
※작업자 노드 worker node
쿠버네티스 클러스터에는 작업자노드라는 머신이 여러 대 존재할 수 있는데, 이 작업자 노드에 컨테이너화된 애플리케이션이 배포됨. 컨테이너가 실행하고 네트워크에 연결할 수 있도록 작업자 노드는 CPU, 메모리, 네트워크, 스토리지 등을 제공.
※컨트롤 플레인 control plane
컨트롤 플레인은 작업자 노드를 관리하는 컨테이너 오케스트레이션 계층. API 및 인터페이스를 통해 컨테이너의 라이프사이클을 정의, 배포, 관리한다.
※파드 pod
가장 작은 배포 단위. 하나 이상의 컨테이너 포함.
일반적으로 하나의 파드에는 애플리케이션이 하나만 있으나 핵심 애플리케이션을 지원하기 위한 컨테이너가 추가로 포함될 수 있음. 쿠버네티스는 컨테이너를 직접 관리하지 않고 파드를 관리.
※배포 deployment
배포 객체를 통해 애플리케이션에 대해 원하는 배포 상태를 쿠버네티스에 알림. 각 인스턴스에 대해 파드를 만들고 잘 작동하도록 관리. 여러개의 파드를 하나의 집합체로 관리.
※서비스 service
서비스 정의를 통해 배포(파드 집합)는 클러스터 내의 다른 노드나 외부로 노출됨. 서비스는 파드 인스턴스들이 균일한 부하를 갖도록 관리.
※리소스 매니페스트 resource manifest
애플리케이션에 대해 원하는 상태를 기술하는 파일. 일반적으로 yaml을 사용하여 작성.
minikube 실행해주고 (minikube start 명령어 입력 혹은 도커 데스크탑앱에서 실행버튼 클릭) 다음 명령어 실행.
minikube image load catalog-service:0.0.1-SNAPSHOT
파드는 배포의 단위지만, 우리가 직접 파드 관리X. 쿠버네티스가 처리.
파드는 애플리케이션 인스턴스라 영구적이지 않고 언제든 제거 가능.
kubectl create deployment catalog-service --image=catalog-service:0.0.1-SNAPSHOT
명령어 | 의미 |
kubectl create | 쿠버네티스 리소스 생성 |
deployment | 생성할 리소스 유형 |
catalog-service | 배포 이름 |
--image=catalog-service:0.0.1-SNAPSHOT | 실행할 이미지의 이름과 버전 |
명령어 실패 해서 status 확인해보니 stopped 라 다시 start시켜줌(서버키고 한참뒤에 블로그 정리하다 실행했더니 그 사이 끊긴듯)
생성된 파드 객체 확인
kubectl get pod
kubectl logs deployment/catalog-service 명령어로 애플리케이션 로그 확인 가능.
서비스 리소스를 통해 카탈로그 서비스를 클러스터에 노출.
kubectl expose deployment catalog-service --name=catalog-service --port=8080
명령어 | 의미 |
kubectl expose | 쿠버네티스 리소스 노출 |
deployment | 노출할 리소스 유형 |
catalog-service | 노출할 배포 이름 |
--name=catalog-service | 서비스 이름 |
--port=8080 | 서비스를 노출할 포트 번호 |
kubectl get service catalog-service 명령어로 서비스가 잘 생성되었는지 확인
이제 컴퓨터의 로컬 포트(ex. 9000)로부터 클러스터 내에서 서비스에 노출된 포트(8080)로 트래픽 전달 가능.
kubectl port-forward service/catalog-service 9000:8080 명령어를 통해 포트 포워딩이 올바르게 설정되었는지 확인.
명령어 | 의미 |
kubectl port-forward | 포트 포워딩 명령 |
service/catalog-service | 노출할 리소스 |
9000 | 로컬 호스트의 포트 |
:8080 | 서비스 포트 |
브라우저창을 열어 로컬페이지로 이동해 9000번 포트로 로컬 사이트 열리는지 확인.
(8080으로는 지금은 열리지 않음)
ctrl c 를 눌러 포트 포워딩 종료.
kubectl delete service catalog-service 실행하여 서비스 삭제.
kubectl delete deployment catalog-service 실행하여 배포 객체도 삭제.
minikube stop 실행하여 쿠버네티스 클러스터 중지.
'Cloud Native Spring in Action' 카테고리의 다른 글
스프링 MVC를 이용한 RESTful 애플리케이션 구축(1) (3) | 2025.02.05 |
---|---|
임베디드 서버로 작업 (0) | 2025.01.08 |
컨테이너를 통한 스프링 애플리케이션의 실행 (0) | 2025.01.07 |
도커, 쿠버네티스 설치 (0) | 2025.01.06 |
컨트롤러 구현, 애플리케이션 테스트, 실행 (0) | 2025.01.05 |