728x90
반응형
Overview
Kubernetes Garbage Collection에 대해서 알아본다.
Kubernetes Garbage Collection이란?
Kubernetes GC(Garbage Collection)는 주로 파드, 컨테이너, 이미지 및 기타 Kubernetes 리소스와 같이 사용되지 않는 객체를 제거하는 데 중점을 두고 리소스 정리를 자동으로 관리하는 시스템이다. Kubernetes에는 3가지 주요 유형의 Garbage Collection이 있다.
- Garbage Collection of Pods and Controllers
- Kubernetes는 더 이상 소유자가 없거나 더 이상 필요하지 않은 리소스의 정리를 자동으로 처리한다.
- Pod: 컨트롤러가 생성한 Pod(예: Deployments, ReplicaSets, StatefulSets)는 더 이상 필요하지 않거나 부모 객체가 삭제되면 자동으로 제거된다.
- Owner References: 쿠버네티스는 소유자 참조를 사용하여 종속 리소스의 수명 주기를 관리한다. 배포와 같은 객체가 삭제되면, 명시적으로 다르게 구성되지 않는 한, 모든 연관된 ReplicaSets와 간접적으로 해당 Pod도 삭제된다.
- Kubernetes는 더 이상 소유자가 없거나 더 이상 필요하지 않은 리소스의 정리를 자동으로 처리한다.
- Container Image Garbage Collection
- 쿠버네티스는 kubelet을 통해 사용되지 않는 컨테이너 이미지에 대한 가비지 수집을 자동으로 수행한다. kubelet은 기본 임계값을 기준으로 사용되지 않는 이미지를 주기적으로 확인하고 정리한다.
- High Threshold: 컨테이너 이미지의 디스크 사용량이 전체 디스크 공간의 이 백분율을 초과하면 kubelet이 가비지 수집을 트리거한다.
- Low Threshold: 디스크 사용량이 이 백분율 아래로 떨어지면 kubelet이 이미지 제거를 중단한다.
- 쿠버네티스는 kubelet을 통해 사용되지 않는 컨테이너 이미지에 대한 가비지 수집을 자동으로 수행한다. kubelet은 기본 임계값을 기준으로 사용되지 않는 이미지를 주기적으로 확인하고 정리한다.
- Resource Finalizers
- Kubernetes의 리소스가 삭제되면 파이널라이저는 리소스가 시스템에서 완전히 제거되기 전에 정리 작업을 수행할 수 있도록 한다.
- 예를 들어, 네임스페이스가 삭제되는 경우 파이널라이저는 네임스페이스 자체가 제거되기 전에 해당 네임스페이스 내의 모든 리소스가 정리되도록 한다. 이 프로세스는 자동화되며 Kubernetes 컨트롤러에서 관리한다.
Kubernetes Garbage Collection Workflow
차트는 Kubernetes가 리소스 관리 및 가비지 수집을 처리하는 방법을 설명한다.
- API Server
- Kubernetes 클러스터의 중앙 명령 허브이다. 리소스에 대한 생성, 업데이트 및 감시 작업을 처리한다. 변경 사항이 감지되면 API 서버는 해당 컨트롤러에 알린다.
- Controller
- 컨트롤러는 Kubernetes 리소스를 모니터링하고 시스템 상태를 처리하는 프로세스이다. 시스템의 실제 상태가 Kubernetes 리소스에서 설명하는 원하는 상태와 일치하는지 확인한다. 예를 들어 배포 컨트롤러는 배포의 수명 주기를 관리한다.
- ReplicaSet, Deployments, etc.
- 이러한 리소스는 특정 시간에 지정된 수의 복제본 Pod가 실행되도록 보장하는 등 Pod 세트에 대해 원하는 상태를 정의한다.
- Pod
- Pod는 Kubernetes에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위이다. 이는 클러스터에서 실행되는 컨테이너이다.
- Garbage Collector
- 이 구성 요소는 더 이상 소유자 참조(Owner References)가 없거나 삭제 대상으로 명시된 개체(i.e., they are orphans)를 제거하여 리소스를 정리한다. 이는 리소스를 확보하는 데 매우 중요하다.
- Kubelet
- 각 노드에서 실행되는 Kubelet은 API 서버의 지침에 따라 Pod의 수명 주기를 관리한다. 컨트롤 플레인의 지시에 따라 포드로 구성된 애플리케이션 컨테이너를 시작, 중지 및 유지 관리한다.
- Node
- 클러스터에 따라 VM 또는 물리적 머신일 수 있는 Kubernetes의 작업자 머신을 나타낸다.
- Container Images
- 컨테이너에서 실행하는 데 필요한 모든 요소가 포함된 실행 가능한 소프트웨어 패키지니다. Kubelet은 노드에서 사용되지 않는 컨테이너 이미지를 가비지로 수집하여 디스크 공간을 효율적으로 사용할 수 있도록 하는 역할을 한다.
아래의 명령어로 Grabage Collection log를 확인가능하다.
sudo journalctl -u kubelet | grep -i garbage
Reference
https://kubernetes.io/docs/concepts/architecture/garbage-collection/
https://blog.devops.dev/clean-up-your-kubernetes-cluster-using-this-built-in-feature-651e48ee274f
728x90
반응형
'Container Orchestration > Kubernetes' 카테고리의 다른 글
Helm Chart Template 문법 (0) | 2024.11.15 |
---|---|
Kubernetes 생태계 표준화와 Container Interface(CRI, CSI, CNI) (0) | 2024.07.15 |
Kubernetes Pod를 안전하게 종료하는 방법(cordon, uncordon, drain, scale) (0) | 2024.07.09 |
Ingress Nginx란? (0) | 2024.07.04 |
Kubernetes Volumes 및 StorageClass: CSI 드라이버 사용 가이드 (0) | 2024.04.28 |