Kubernetes

7개의 글이 있습니다.

Kubernetes

쿠버네티스 환경에서의 부하분산(로드밸런싱)

쿠버네티스에서 애플리케이션을 운영하다 보면 결국 외부 트래픽을 어떻게 Pod까지 전달할지 고민하게 됩니다. Pod는 여러 개로 늘어날 수 있고, 장애가 나면 다시 생성되며, 배포 과정에서도 계속 바뀝니다. 이런 환경에서 특정 Pod 하나를 직접 바라보는 방식은 안정적이지 않습니다.그래서 쿠버네티스에서는 Service를 통해 Pod 앞에 고정된 진입점을 만들고, 필요에 따라 LoadBalancer나 Ingress를 붙여 외부 트래픽을 받아들입니다. 이 글에서는 쿠버네티스 환경에서 부하분산이 어떤 흐름으로 동작하는지, 특히 클라우드 환경에서 LoadBalancer 타입 Service가 어떻게 사용되는지 정리해보겠습니다.핵심은 단순합니다. 사용자는 고정된 주소로 접근하고, 쿠버네티스는 그 요청을 현재 살아있는..

쿠버네티스 환경에서의 부하분산(로드밸런싱)
Kubernetes

쿠버네티스 네트워크

ServicePod는 언제든 죽고 다시 생길 수 있다.그래서 Pod IP를 직접 보고 접근하면 안정적이지 않다.Service는 여러 Pod 앞에 붙는 고정 진입점이다.사용자는 Service IP로 접근하고, Service가 뒤쪽 Pod로 트래픽을 분산한다.정리하면, Pod는 일회성에 가깝고 Service는 고정된 주소 역할을 한다. 그래서 쿠버네티스에서 애플리케이션을 연결할 때는 보통 Pod가 아니라 Service를 바라본다.Service 타입타입역할사용 상황ClusterIP클러스터 내부에서만 접근 가능한 Service IP를 만든다.백엔드, DB, 내부 API처럼 외부에 공개하지 않는 서비스NodePort각 Node의 특정 포트를 통해 Service에 접근하게 한다.테스트 환경, 간단한 외부 노출Loa..

쿠버네티스 네트워크
Kubernetes

쿠버네티스 볼륨

볼륨이 필요한 이유쿠버네티스에서 Pod 내부 컨테이너의 파일 시스템은 컨테이너가 종료되면 함께 사라지는 휘발성 저장소입니다.따라서 컨테이너 생명주기와 무관하게 데이터를 유지하기 위해서는 별도의 저장공간(Volume) 이 필요합니다.또한 각 컨테이너 별로 저장소는 공유가 되지 않기 때문에 데이터 공유가 필요할 때도 볼륨이 필요합니다.볼륨의 두 가지 주요 역할컨테이너 간 임시 저장 공간 공유컨테이너 데이터 영구 저장 공간 제공(중요)1. 컨테이너 간 임시 공간 공유 (emptyDir)컨테이너들이 서로 데이터를 주고받아야 하는 경우, Pod가 살아있는 동안만 유지되는 임시 저장소인 emptyDir을 사용할 수 있습니다.emptyDir은 Pod가 삭제될 때 함께 삭제되지만, 같은 Pod 내에서 컨테이너 재시작 ..

쿠버네티스 볼륨
Kubernetes

쿠버네티스 아키텍처

Kubernetes 클러스터 정리: 컨트롤 플레인 + 워커 노드Kubernetes 클러스터는 컨트롤 플레인(Control Plane)과 워커 노드(Worker Node)로 구성되며, 컨트롤 플레인은 클러스터의 두뇌 역할을, 워커 노드는 실제 애플리케이션 파드(Pod)를 실행하는 역할을 담당합니다.1. 컨트롤 플레인(Control Plane)컨트롤 플레인은 사용자가 정의한 원하는 상태(Desired State)를 유지하기 위한 모든 관리 및 조정 작업을 수행합니다.구성 요소별 역할구성 요소역할 및 기능통신의 중심API 서버 (Kube-apiserver)클러스터의 모든 통신과 요청 처리. etcd에 접근하는 유일 경로.모든 구성 요소etcd클러스터의 상태 저장소, 단 하나의 진실 근원(Source of Tr..

쿠버네티스 아키텍처
Kubernetes

쿠버네티스 명령어 정리 (kubectl) 및 yaml

리소스 조회kubectl get # pod, deployment, service 등kubectl get podkubcetl get deploymentkubectl get service# 상세 조회kubectl get -o widekubectl get pod -o wide리소스 디버그Pod의 상태를 봤을 때 오류가 발생한 경우 다음과 같이 원인을 찾을 수 있습니다.kubectl describe pod 컨테이너의 로그까지 봐야되는 경우kubectl logs -f리소스 삭제kubectl delete kubectl delete pod my-podkubectl delete service my-svc# 일괄 삭제 --allkubectl delete pod --allkubectl delete deploymen..

쿠버네티스 명령어 정리 (kubectl) 및 yaml
Kubernetes

쿠버네티스 개념 및 용어 정리

쿠버네티스란?쿠버네티스는 컨테이너 기반 MSA 환경에서 복잡한 운영을 자동화하고 표준화하기 위해 사용되는 오케스트레이션 플랫폼입니다.이게 아직은 무슨 소린지 감이 안 잡힙니다.쿠버네티스 도입 배경 알기 전에 MSA에 대하여 간략하게 알아봐야 합니다.MSA : Micro Service Architecture의 약자로 기존 서버의 기능을 역할 별로 쪼개어 결합도를 낮추어 배포하는 방식ex) 쿠팡 백엔드 서버(서비스)를 -> 결제 서버, 장바구니 서버, 회원 서버, 판매 서비스 등 쪼개버리는 것 MSA의 장점은 기존에는 서버에 문제가 생기면 모든 기능이 마비가 되었는데 서버를 역할별로 잘게 쪼개어 하나의 서버에서 문제가 생겨도 나머지 기능에 영향이 가지 않도록 하기 위함입니다. 개발적인 측면이나 안정성 측면에..

쿠버네티스 개념 및 용어 정리
Kubernetes

쿠버네티스 VMware 실습 환경 세팅

쿠버네티스 노드 공통 환경 구성OS : Ubuntu Server 24.04 기준Master / Worker 노드 공통 설정1. 서버 시간대 설정쿠버네티스는 분산 시스템으로, 로그 분석, 이벤트 타임스탬프, 노드 간 통신 등 모든 작업에 정확한 시간 동기화가 필수적입니다.기본값인 UTC 대신 한국으로 시간대를 통일합니다.sudo timedatectl set-timezone Asia/Seoul2. 노드 간 정밀 시간 동기화각 노드의 시간이 더욱 정밀하게 동기화되도록 Chrony를 설치 및 사용합니다.sudo apt -y install chrony3. Swap 메모리 비활성화쿠버네티스의 구성 요소인 Kubelet은 Swap이 활성화된 노드에서는 기본적으로 실행되지 않도록 설계되어 있습니다.따라서 다음과 같이 ..

쿠버네티스 VMware 실습 환경 세팅