본문 바로가기
반응형

Server-side 개발 & 트러블 슈팅/Kubernetes (쿠버네티스)9

[minikube] 쿠버네티스 퍼시스턴트 볼륨 이론과 실습 가이드 (kubernetes PV, PVC) 쿠버네티스 퍼시스턴스 볼륨이 필요한 이유1. 데이터 손실Pod 특성: 쿠버네티스 Pod는 삭제/재시작 시 내부 데이터(메모리, 파일 등)가 완전히 사라집니다.실습 예시: 예를 들어, 차량 위치 이력을 메모리에만 저장하면 Position Tracker Pod를 재생성할 때마다 모든 기록이 손실됩니다.운영 위험: 무중단 배포만큼이나, 재난 상황에서도 데이터를 잃지 않는 구조가 실제 서비스에선 더욱 중요하게 작용합니다.2. 데이터 영속성이 필요한 이유와 해결책영구 저장 요구: 애플리케이션 내 메모리만 사용할 경우 장애 시 복구 불가.쿠버네티스 퍼시스턴트 볼륨: 호스트 파일시스템이나 클라우드 블록 스토리지(AWS EBS 등) 같은 외부에 데이터를 저장하여 영속성 확보 가능.3. MSA 설계 원칙의 적용https.. 2025. 7. 18.
[minikube] 쿠버네티스를 이용한 간단한 MSA 베포 실습 가이드(microservices in kubernetes) 시스템 아키텍처 개요 및 Kubernetes MSA배포 가이드시스템 개요이번에 배포하게 될 시스템은 "운송 회사의 차량 위치 추적 시스템"으로, 실제 운영 중인 트럭 등 차량들이 주기적으로 자신의 GPS 좌표를 서버로 전송하는 구조를 시뮬레이션합니다.실제 차량 대신 위치 시뮬레이터(Position Simulator) 가 더미 데이터를 생성해 시스템에 흘려보냅니다.시스템은 다음의 5가지 Docker 이미지(마이크로서비스)로 구성됩니다.Position Simulator역할: 여러 대의 차량이 임의의 좌표를 서버로 올리는 것을 시뮬레이션특징: Java/Spring Boot 기반이며, 미리 만들어진 경로 파일(위도/경도 목록)을 읽어서 10초마다 무작위 차량 위치를 생성Queue (ActiveMq)역할: 메시지.. 2025. 7. 17.
[minikube] 쿠버네티스 네트워킹, 디스커버리를 이용한 MySQL 파드와 연동하기 (데이터베이스 연결) 쿠버네티스의 네트워킹과 서비스 디스커버리 이해하기쿠버네티스에서 네트워킹과 서비스 디스커버리는 컨테이너 간 통신을 가능하게 하는 핵심 메커니즘이다. 이 기능을 통해 분산된 마이크로서비스들이 서로를 찾고 통신할 수 있으며, 이는 현대적인 클라우드 네이티브 애플리케이션 구축의 필수 요소이다. 이 글에서는 쿠버네티스의 네트워킹 처리 방법과 서비스 디스커버리 작동 원리에 대해 자세히 알아보고 실제 적용 방법까지 다룬다.쿠버네티스 네트워킹의 기본 원리쿠버네티스에서 네트워킹은 애플리케이션 컨테이너가 서로 통신할 수 있도록 하는 중요한 기반이다. 이를 이해하기 위해서는 컨테이너 간 통신의 기본 개념을 먼저 알아야 한다.컨테이너 간 통신의 필요성애플리케이션을 개발할 때 다양한 서비스를 분리하여 배포하는 것이 일반적이다... 2025. 5. 1.
[minikube] 쿠버네티스 디플로이먼트(Deployment)를 이용한 롤링 베포, 롤백 가이드 (rolling, rollout) 쿠버네티스 Deployment(디플로이먼트) 이해와 활용 가이드쿠버네티스에서 Deployment는 포드를 관리하는 가장 일반적인 방법이다. 레플리카 세트의 기능을 확장하여 애플리케이션의 지속적인 배포와 업데이트를 가능하게 해주는 리소스이다. 이 글에서는 디플로이먼트의 개념, 구조, 그리고 실제 활용 방법에 대해 상세히 알아보도록 한다.디플로이먼트란 무엇인가디플로이먼트는 쿠버네티스에서 기본적으로 레플리카 세트를 관리하는 더 고급 수준의 컨트롤러이다. 레플리카 세트의 모든 기능을 포함하면서 추가로 롤링 업데이트와 롤백과 같은 배포 관련 기능을 제공한다. 가장 큰 장점은 가동 중지 시간 없이 애플리케이션을 업데이트할 수 있다는 점이다.디플로이먼트는 레플리카 세트를 생성하고 관리하며, 레플리카 세트는 포드를 생.. 2025. 4. 30.
[minikube] 쿠버네티스 레플리카셋(replicaset)을 이용한 무중단 베포 가이드 (고가용성 유지) ReplicaSet: Pod 수명 관리를 책임지는 컨트롤러1. ReplicaSet이란?Kubernetes에서 ReplicaSet은 특정 수의 Pod 복제본이 항상 실행되도록 보장해주는 **컨트롤러(controller)**이다. 만약 어떤 Pod가 종료되거나 장애로 인해 사라지더라도, ReplicaSet은 새로운 Pod를 자동으로 생성하여 원하는 개수를 유지한다.이는 특히 무중단 서비스 제공과 고가용성(HA, High Availability) 확보에 필수적인 요소다.2. 왜 필요한가?Kubernetes에서는 Pod 자체는 일시적인 존재다. 다음과 같은 상황을 생각해보자.Pod가 예기치 않게 종료되면 수동으로 다시 띄워야 할까?서비스 확장을 위해 Pod 수를 늘리고 싶다면 어떻게 해야 할까?이러한 반복적이고.. 2025. 4. 30.
[minikube] 쿠버네티스 Queue 파드 및 서비스 배포 가이드 쿠버네티스에서 ActiveMQ(Queue) 포드 및 서비스 배포 가이드이번 시간에는 여러분이 직접 ActiveMQ(Queue) 서비스를 쿠버네티스에 포드와 서비스로 배포하는 방법을 실습해보겠다.1. 실습 개요필요한 이미지는 richardchesterwood/k8s-fleetman-queue:release1이다.release1 태그를 사용하는 이유는 프로토타입과 구분되는 실제 릴리스 환경에서만 큐가 동작하도록 하기 위함이다.포드가 실행 중일 때 8161 포트로 큐 관리 콘솔이 노출된다.관리 콘솔의 기본 아이디와 비밀번호는 각각 admin, admin이다.NodePort로 8161 포트를 직접 노출하는 것은 권장되지 않으나, 현재는 로컬 환경이므로 30010 포트로 노출한다.포트 번호는 30000~32767.. 2025. 4. 27.
[minikube] 쿠버네티스 서비스(Service) 구조와 실행 Kubernetes에서 Service란? – Pod를 외부로 노출하는 방법앞선 강의에서는 Kubernetes 클러스터 안에 첫 번째 Pod를 만들어보고, 그 안에 웹 애플리케이션 컨테이너를 배포했습니다. 하지만 그 상태에서는 웹 브라우저로 아무리 접근해도 연결되지 않았습니다. 왜 그럴까요?그 이유는 Pod는 기본적으로 외부에서 접근할 수 없도록 설계되어 있기 때문입니다. 이 제한을 해결하기 위해 Kubernetes는 Service라는 리소스를 제공합니다.왜 Service가 필요한가?Kubernetes에서 Pod는 수명이 짧고 가볍게 쓰고 버리는 존재입니다. 특정 Pod가 중단되면, Kubernetes는 새롭게 동일한 Pod를 생성합니다. 이 과정에서 IP 주소도 바뀌게 됩니다. 이렇게 계속 바뀌는 Pod.. 2025. 4. 8.