클라우드/Kubernetes 11

LivenessProbe와 ReadinessProbe 완전 이해하기

쿠버네티스를 사용하는 개발자라면 LivenessProbe와 ReadinessProbe는 반드시 이해하고 있어야 할 개념입니다. 이 두 가지는 컨테이너의 상태를 모니터링하고, 장애 대응과 트래픽 분산을 보다 안정적으로 하기 위한 핵심 기능입니다. 하지만 그 목적과 작동 방식이 유사해 보이기 때문에 처음에는 헷갈리기 쉽습니다. 이번 포스팅에서는 LivenessProbe와 ReadinessProbe의 차이점, 설정 방법, 실무에서의 활용 전략까지 자세히 알아보겠습니다.1. LivenessProbe란?LivenessProbe는 컨테이너가 살아 있는지(live) 여부를 판단합니다. 즉, 컨테이너가 동작은 하고 있지만 내부적으로 문제가 있어 정상적인 작업을 수행하지 못하고 있다면, 쿠버네티스는 이를 감지해 컨테이너..

Bastion이란? 쿠버네티스 인프라에서 꼭 알아야 할 보안 관문

클라우드와 쿠버네티스(Kubernetes)를 공부하다 보면 "Bastion"이라는 용어를 자주 접하게 됩니다. 이 글에서는 Bastion의 개념부터 쿠버네티스 환경에서의 활용 방식까지, 처음 듣는 사람도 쉽게 이해할 수 있도록 자세히 설명하겠습니다.Bastion의 의미Bastion은 원래 성곽에서 "보루" 또는 "전초기지"라는 뜻을 가진 군사 용어입니다. IT 인프라에서 Bastion은 외부에서 내부 네트워크로 들어가기 위한 보안 관문(secure gateway) 역할을 합니다. 외부에서 내부망으로의 직접 접속을 차단하고, 반드시 Bastion 서버를 통해서만 접근하도록 설계되어 있습니다.예를 들어, 프라이빗 VPC(가상 사설망) 내부에 있는 EC2 인스턴스, 쿠버네티스 노드, 데이터베이스 서버 등은 외..

쿠버네티스 인그레스(Ingress) 완전 정복: 정의부터 설정, 그리고 실전 사용까지

쿠버네티스(Kubernetes)를 활용해 서비스를 운영하다 보면 외부 트래픽을 클러스터 내부의 서비스로 유입시켜야 할 때가 많습니다. 이때 사용하는 핵심 리소스가 바로 **Ingress(인그레스)**입니다. 이 글에서는 인그레스의 개념부터 설정 방법, 그리고 실전 사용 시 고려할 점까지 상세히 소개하겠습니다.🔍 인그레스란 무엇인가?Ingress는 HTTP(S) 트래픽을 클러스터 외부에서 내부 서비스로 라우팅하는 규칙을 정의하는 쿠버네티스 리소스입니다. 간단히 말해, 여러 개의 서비스를 외부에 노출할 때 각각의 서비스에 LoadBalancer를 설정하는 대신, 하나의 진입점(Ingress Controller)을 두고 도메인이나 URL 경로 기반으로 트래픽을 분기할 수 있도록 도와주는 역할을 합니다.예를 ..

PVC와 PV의 차이점: 쿠버네티스 스토리지 개념 완벽 정리

쿠버네티스(Kubernetes)를 사용하다 보면 스토리지(Volume) 개념에서 혼란을 겪기 쉽습니다. 특히 PV(PersistentVolume)와 PVC(PersistentVolumeClaim)는 이름도 비슷하고 기능도 연결되어 있어 처음 접하는 사람에게는 이해하기 어렵습니다. 이번 글에서는 PV와 PVC의 개념, 차이점, 그리고 실제 동작 방식까지 명확하게 정리하여 설명드립니다.1. 쿠버네티스의 스토리지 개요쿠버네티스는 기본적으로 **Stateless(상태 없음)**한 애플리케이션 실행을 전제로 하지만, 실제 서비스에서는 데이터 저장이 필요한 Stateful(상태 있음) 애플리케이션도 많습니다. 예를 들어 DB(MySQL, PostgreSQL)나 로그 파일, 업로드된 파일을 저장해야 하는 워크로드는 ..

배포 전략(Deployment Strategy)

배포 전략(Deployment Strategy)은 애플리케이션을 운영 환경(Production)으로 안전하고 효율적으로 배포하기 위해 사용하는 방법론입니다. 이는 다운타임을 줄이고, 버그나 실패 발생 시 빠르게 롤백할 수 있게 하며, 사용자 경험을 최대한 유지하기 위해 매우 중요합니다.아래는 주요 배포 전략 7가지와 각각의 특징, 장단점을 정리한 내용입니다.✅ 1. Recreate (완전 재배포)기존 버전을 종료하고 새 버전을 시작함.중단 후 시작 방식.🔹장점구조가 간단하고 구현이 쉬움.리소스 소비가 적음.🔸단점다운타임이 발생함.트래픽이 많은 서비스에는 적합하지 않음.✅ 2. Rolling Update (롤링 업데이트)구 버전을 하나씩 종료하고, 새 버전을 순차적으로 배포.사용자는 점진적으로 새 버전..

Helm이란?

Helm은 Kubernetes 애플리케이션을 정의하고 설치하며 관리할 수 있는 패키지 관리자입니다. Helm을 사용하면 복잡한 Kubernetes 리소스를 템플릿화하고, 이를 패키지처럼 배포하거나 버전 관리할 수 있습니다. 마치 리눅스에서 apt, yum, brew 등을 사용하는 것처럼 Kubernetes 환경에서 Helm을 사용하는 것이죠.✅ Helm이란?Helm은 Kubernetes 애플리케이션을 패키징하고 공유할 수 있도록 도와주는 **“Kubernetes용 패키지 관리자(Package Manager)”**입니다.Helm에서 사용되는 패키지를 Chart라고 부르며, 하나의 Chart에는 Deployment, Service, ConfigMap, Secret 등의 리소스 템플릿이 포함됩니다.Chart는..

Kubernetes Service Domain 구조 완벽 가이드

Kubernetes에서는 클러스터 내부에서 Pod 간 통신을 서비스 이름만으로도 가능하게 만들어주는 Service Domain 구조가 존재합니다. 이는 내부 DNS 시스템인 CoreDNS에 의해 지원되며, 복잡한 IP 관리 없이도 서비스 간의 효율적인 연결을 가능하게 해줍니다.🧱 기본 도메인 구조Kubernetes의 DNS 도메인은 다음과 같은 계층 구조를 따릅니다:..svc.예를 들어, my-service라는 서비스가 default 네임스페이스에 존재한다면, 이 서비스의 FQDN(Fully Qualified Domain Name)은 다음과 같습니다:my-service.default.svc.cluster.local각 구성 요소는 다음과 같은 의미를 가집니다:구성요소 설명my-service서비스 이름de..

CoreDNS란? 쿠버네티스 DNS의 핵심을 이해하자

CoreDNS는 쿠버네티스(Kubernetes) 환경에서 기본 DNS 서버로 동작하는 확장 가능하고 경량화된 DNS 솔루션입니다. 기존의 kube-dns를 대체하며, 빠른 속도와 유연한 구성, 강력한 확장성을 제공하는 것이 특징입니다. 쿠버네티스 클러스터에서 파드 간 통신과 서비스 디스커버리를 가능하게 해주는 필수 인프라 구성 요소입니다.CoreDNS의 핵심 개념CoreDNS는 DNS 요청을 처리하는 동시에 플러그인 기반 아키텍처를 통해 다양한 기능을 쉽게 추가하거나 제거할 수 있습니다. 설정은 Corefile이라는 파일을 통해 이뤄지며, 도메인 별 라우팅, 캐시, 포워딩 등의 세부 동작을 정의할 수 있습니다.예시:. { forward . 8.8.8.8 cache log}이 구성은 모든 DNS 요청..

Kubernetes 서비스 타입 완전 정리: ClusterIP, NodePort, LoadBalancer, ExternalName

Kubernetes에서 애플리케이션을 배포하면 Pod가 생성되지만, 이 Pod는 IP가 변동될 수 있어 직접 접근하기 어렵습니다. 이를 해결하기 위해 Kubernetes는 Service 리소스를 제공합니다. Service는 Pod의 집합에 접근하기 위한 안정적인 엔드포인트를 만들어 주며, 여러 타입이 존재합니다.이 글에서는 Kubernetes의 4가지 주요 Service 타입인 ClusterIP, NodePort, LoadBalancer, ExternalName의 특징과 사용 예제를 자세히 설명합니다.📌 1. ClusterIP – 기본값, 내부 전용 통신✅ 정의ClusterIP는 Kubernetes 서비스의 기본 타입으로, 클러스터 내부에서만 접근 가능한 IP를 제공합니다.✅ 특징클러스터 내부에서만 접..

Kubernetes 리소스 요청(requests)과 제한(limits)의 차이 완벽 정리

쿠버네티스(Kubernetes)에서 Pod를 생성할 때 가장 중요한 설정 중 하나는 리소스(Resource) 설정입니다. 특히 requests와 limits는 클러스터 자원을 어떻게 할당하고 제어할지를 결정하는 핵심 요소입니다. 이번 글에서는 아래의 예제를 기준으로 이 두 설정의 의미와 차이를 자세히 설명드리겠습니다.apiVersion: v1kind: Podmetadata: name: example-conflict-with-limitrange-cpuspec: containers: - name: demo image: smlinux/pause:2.0 resources: requests: cpu: 500m limits: cpu: 500m ..