본문 바로가기
K8S

쿠버네티스 캐스케이딩 삭제(Cascading Deletion)

by Rainbound-IT 2026. 1. 22.
반응형

쿠버네티스에서 리소스를 삭제할 때,

“부모 리소스를 지우면 자식 리소스는 어떻게 될까?”

이 동작을 결정하는 메커니즘이 바로 **캐스케이딩 삭제(Cascading Deletion)**다.

운영 중 Deployment, Job, ReplicaSet을 삭제하다 보면

Pod가 함께 사라지거나, 남아 있거나, 삭제가 멈춰 있는 상황을 자주 마주하게 된다.

이 글에서는 그 이유를 구조적으로 정리한다.


1. 캐스케이딩 삭제란?

캐스케이딩 삭제

부모 리소스를 삭제할 때, 그에 의해 관리되는 하위 리소스를 함께 삭제할지 여부를 결정하는 방식이다.

쿠버네티스는 리소스 간 관계를 OwnerReference로 관리한다.

예시 구조:

Deployment
 └─ ReplicaSet
     └─ Pod

Deployment를 삭제하면:

  • ReplicaSet을 지울지?
  • Pod도 같이 지울지?
  • 아니면 Pod는 남길지?

이 결정이 **삭제 전파 정책(Deletion Propagation Policy)**이다.


2. 삭제 전파 정책 (Propagation Policy)

쿠버네티스는 3가지 방식을 제공한다.


① Background (기본값)

kubectl delete deployment my-app
# 또는
kubectl delete deployment my-app --cascade=background

동작 방식

  • 부모 리소스를 즉시 삭제
  • 자식 리소스는 컨트롤러가 비동기로 정리

특징

  • 가장 빠름
  • 잠깐 동안 고아 Pod가 보일 수 있음
  • 대부분의 운영 환경에서 기본 사용

실무 기준

“일반적인 서비스 삭제는 거의 다 background”


② Foreground (전면 삭제)

kubectl delete deployment my-app --cascade=foreground

동작 방식

  • 자식 리소스를 먼저 전부 삭제
  • 자식이 모두 삭제된 후 부모 리소스 삭제

상태 변화

  • 부모 리소스에 deletionTimestamp만 찍힌 채 남아 있음
  • 실제 삭제는 보류 상태

특징

  • 정합성 보장
  • 삭제 속도 느림
  • 장애 분석, 데이터 정리 작업에 적합

③ Orphan (고아화)

kubectl delete deployment my-app --cascade=orphan

동작 방식

  • 부모 리소스만 삭제
  • 자식 리소스는 그대로 유지
  • ownerReferences 제거

특징

  • Pod가 완전히 독립됨
  • 수동 관리 필요
  • 디버깅/임시 유지 목적

3. 캐스케이딩 삭제의 핵심 조건: OwnerReference

자식 리소스에 아래 정보가 있어야 캐스케이딩 대상이 된다.

ownerReferences:
-apiVersion:apps/v1
kind:Deployment
name:my-app
uid:xxxx
controller:true

중요한 포인트

  • ownerReferences가 없으면 삭제 전파 안 됨
  • controller: true → 컨트롤러 관계
  • 수동 생성 Pod는 보통 owner 없음

즉,

“부모-자식 관계는 label이 아니라 OwnerReference로 결정된다”


4. Finalizer와 캐스케이딩 삭제의 관계

캐스케이딩 삭제가 있어도

finalizer가 있으면 삭제는 멈춘다.

예시

  • PVC (kubernetes.io/pvc-protection)
  • Ingress (LoadBalancer 정리 대기)
  • Cloud 리소스 연동 객체

이 경우 상태는:

metadata.deletionTimestamp: 있음
하지만 리소스는 계속 남아 있음

이는 오류가 아니라 의도된 보호 동작이다.


5. 흔히 헷갈리는 시나리오 정리

작업 결과

Deployment 삭제 ReplicaSet → Pod 삭제
ReplicaSet 직접 삭제 Pod만 삭제
Pod 직접 삭제 영향 없음
--cascade=orphan Pod 유지
Finalizer 존재 삭제 대기 상태

6. 실무에서의 선택 기준

상황 추천 정책

일반 서비스 삭제 Background
장애 원인 분석 Foreground
Pod 유지하며 구조 변경 Orphan

7. 한 줄 요약

쿠버네티스의 캐스케이딩 삭제는 OwnerReference를 기준으로 부모 리소스 삭제가 자식 리소스에 어떻게 전파될지를 제어하는 메커니즘이며,

실제 삭제 여부는 propagation policy와 finalizer에 의해 결정된다.

반응형

댓글