반응형

Container Orchestration 43

Kubernetes Garbage Collection

OverviewKubernetes Garbage Collection(GC)은 클러스터 내 불필요하거나 더 이상 참조되지 않는 리소스(예: Pod, 컨테이너 이미지, 네임스페이스 등)를 자동으로 정리하는 기능이다.Kubernetes는 API Server, Controller, Kubelet 등 각 컴포넌트를 통해 리소스의 생성과 삭제를 조율하고, OwnerReferences, Finalizers, Threshold 정책을 기반으로 다양한 수준의 GC를 수행한다.  GC는 다음 세 가지 방식으로 작동한다.Pod 및 Controller 기반 GCKubelet 이미지 GC (디스크 절약 목적)Finalizer 기반 리소스 GC (네임스페이스, CRD 등)  이를 통해 클러스터 안정성과 자원 활용도를 높이고, 리..

Kubernetes 생태계 표준화와 Container Interface(CRI, CSI, CNI)

Overview오늘은 Kubernetes에서 핵심 컴포넌트와 외부 시스템 간의 모듈식 연동을 가능하게 하는 표준 인터페이스, 즉 CRI, CSI, CNI, CDI 등 다양한 Container 인터페이스에 대해 알아본다. Kubernetes는 다양한 클라우드 환경과 기술 스택에 확장성과 유연성을 제공하기 위해, 특정 런타임이나 네트워킹/스토리지 기술에 의존하지 않고 표준화된 인터페이스를 통해 구성 요소를 분리해왔다.이러한 구조는 새로운 기술의 빠른 통합, 공급자 중립성 확보, 클러스터 운영 단순화, 그리고 생태계의 확장을 가능하게 했다. 이번 글에서는 각 인터페이스가 무엇을 해결하고자 등장했는지, 그리고 어떤 방식으로 Kubernetes 환경에서 동작하고 있는지를 이해함으로써, 쿠버네티스가 왜 현대 클라우..

Kubernetes Pod를 안전하게 종료하는 방법(cordon, uncordon, drain, scale)

OverviewKubernetes 운영 환경에서는 노드 유지보수, 애플리케이션 롤링 업데이트, 스케일링 등 다양한 이유로 Pod 종료 및 재배치가 필요하다. 하지만 단순히 `kubectl delete pod` 만으로 처리한다면 서비스 중단이나 데이터 손실 위험이 따를 수 있다. 이 글에서는 Kubernetes에서 제공하는 `cordon, uncordon, drain, scale` 명령어를 중심으로, Pod를 안전하고 신중하게 종료하고 재시작하는 전략을 정리한다.특히 StatefulSet과 Stateless 앱의 차이, Pod Disruption Budget(PDB), 노드 유지보수 플로우까지 실전적인 관점에서 살펴본다.       Kubernetes Pod를 안전하게 종료 Kubernetes에서 Pod ..

Ingress Nginx란?

OverviewKubernetes 클러스터에 외부 트래픽을 안전하고 유연하게 연결하려면 적절한 진입 지점(Entry Point)이 필요하다.  Ingress NGINX는 Kubernetes에서 가장 널리 사용되는 Ingress Controller 중 하나로, HTTP/HTTPS 요청을 클러스터 내부의 서비스로 라우팅하는 데 최적화되어 있다. 이 글에서는 Ingress NGINX의 개념과 주요 기능, 다양한 주석(annotation)을 활용한 커스터마이징, Helm 또는 Manifest 기반 설치 방법까지 실습 중심으로 알아본다. 특히 On-Premise 환경에서는 LoadBalancer 서비스 유형을 사용하기 위해 MetalLB와 함께 Ingress NGINX를 구성하는 것이 일반적이다. 이를 통해 클라..

Kubernetes Volumes 및 StorageClass: CSI 드라이버 사용 가이드

Overview이번 포스팅에서는 Kubernetes에서 Persistent Volume(PV), Persistent Volume Claim(PVC), 그리고 이를 동적으로 제어할 수 있는 StorageClass 및 CSI(Container Storage Interface) 에 대해 알아보았다. Kubernetes는 기본적으로 파드가 재시작되거나 삭제되면 그 안의 데이터는 사라지게 된다. 하지만 Stateful 애플리케이션을 운영할 때는 데이터가 유지되어야 하므로, 이때 필요한 것이 볼륨(Volume) 시스템이며, 특히 영구 저장소(Persistent Storage) 가 중요한 역할을 한다.  이번 글에서는 다음과 같은 핵심 개념을 다뤘다.PV와 PVC의 개념과 역할접근 모드 및 Reclaim 정책PV/P..

Kubernetes Affinity 및 Scheduling 설정 가이드

Overview쿠버네티스에서는 파드를 어떤 노드에 배포할지를 다양한 방법으로 제어할 수 있다.이 글에서는 대표적인 스케줄링 전략인 NodeSelector, Affinity, Taint & Toleration, Cordon & Drain을 상세하게 정리해본다.    📅 관련 글2022.08.08 - [Container Orchestration/Kubernetes] - Kubernetes Ingress란? (클러스터 외부 트래픽 관리)2023.04.14 - [Container Orchestration/Kubernetes] - Kubernetes Resources(쿠버네티스 리소스)2023.04.17 - [Container Orchestration/Kubernetes] - Kubernetes API Serv..

Kubernetes Network

Overview이번 글에서는 Kubernetes에서의 네트워크 트래픽 흐름과 각 컴포넌트 간 통신 구조에 대해 정리해보았다. Kubernetes는 컨테이너 오케스트레이션 플랫폼인 만큼 Pod, Service, Ingress 등 다양한 컴포넌트가 네트워크를 통해 상호작용한다. 이 구조는 클러스터 내부뿐 아니라 외부 트래픽과의 연결에서도 중요한 역할을 하며, CSP(클라우드 환경)과 온프레미스 환경에서의 동작 방식에 따라 설정과 구성 방식이 달라진다.  이번 정리에서는 다음과 같은 내용을 다루었다.클라우드 환경(CSP) vs 온프레미스 환경에서의 트래픽 흐름 차이Ingress Controller, LoadBalancer Controller 간의 관계MetalLB를 통한 온프레미스 LoadBalancer 구현..

Kubernetes 클러스터 구축하기(kubespray 2024v.)

Overview이번 포스팅에서는 Kubespray를 이용해 Kubernetes 클러스터를 자동으로 설치하고 구성하는 방법을 알아보고, 나아가 Worker Node를 추가하여 확장하는 실습까지 진행해보았다. Kubespray는 Ansible 기반의 프로비저닝 도구로, YAML 기반 인벤토리 파일만 정의하면 다양한 환경(GCP, AWS, 온프렘 등)에서 HA 구성을 포함한 쿠버네티스 클러스터를 유연하게 설치할 수 있는 강력한 툴이다.  이번 실습에서는 다음의 내용을 중심으로 진행하였다.GCP 기반 Control/Worker Node VM 구성 (Terraform)Kubespray 설치 및 Ansible 가상환경 구성클러스터 인벤토리 정의 및 Helm, MetalLB, Ingress 설정 포함Ansible 플..

k3d(k3s in docker)란?

Overview이번 포스팅에서는 k3d (k3s in Docker) 에 대해 알아보고, 실제로 k3d를 활용해 로컬에서 경량 Kubernetes 클러스터를 구성해보는 실습을 진행해보았다. k3d는 Docker 위에서 k3s를 실행하기 위한 경량화된 래퍼 툴로, 별도 VM 환경 없이 빠르게 멀티 노드 클러스터를 생성할 수 있어 로컬 개발, CI 테스트, GitOps 환경 구성 등에 매우 유용하다. 특히, Docker 기반으로 작동하기 때문에 DevOps 환경에서의 테스트 클러스터, 교육용 실습, 애플리케이션 배포 전 검증 등의 용도로 최적화되어 있다. 이번 실습에서는 다음을 수행하였다.k3d 설치 및 클러스터 생성 (3노드 구성)kubectl, bashrc, alias, context 설정kind 클러스터..

kind(Kubernetes in Docker)란?

Overview오늘은 kind (Kubernetes in Docker) 에 대해 알아보려고 한다.kind는 Docker 컨테이너 기반으로 로컬 Kubernetes 클러스터를 실행하는 도구로, Kubernetes 자체 테스트 및 로컬 개발 환경 구축, CI/CD 파이프라인 테스트 등에 활용된다.Docker와 Go 환경이 갖춰져 있다면 간단한 명령어로 Kubernetes 클러스터를 구축할 수 있으며, 비교적 가벼운 환경에서도 Kubernetes를 실행할 수 있어 실습 및 개발에 적합하다.  이 글에서는 kind의 개념과 특징, 설치 및 활용 방법, 그리고 k3d와의 비교를 살펴본다.         kind(Kubernetes in Docker)란? kind는 Docker 컨테이너 노드를 사용하여 로컬 Kub..

반응형