Kubernetes - Finalizers

han·2022년 2월 15일
0

쿠버네티스에서 리소스를 삭제하려고 할 때, 특정 조건을 충족시킬때 까지 삭제를 방지하는 역할을한다.
일반적으로는 코드가 아닌 특정 키가 기술된다.

동작 과정

  1. 처음 메타데이터 파일(ex) yaml)에 metadata.finalizers 필드에 조건을 기술하여 생성한다.
  2. 쿠버네티스 리소스 삭제 명령을 내릴 시 쿠버네티스 API는 해당 리소스에 .metadata.deletionTimestamp를 추가한 후 202 코드를 리턴한다.
  3. 해당 오브젝트(리소스)는 컨트롤러가 finalizer에 정의된 조건을 충족시킬때까지 Terminating 상태에서 대기한다.
  4. 조건이 충족될때마다 컨트롤러는 finalizer내의 충족된 키를 제거한다.
  5. metadata.finalizers 필드가 empty 상태가 되면, 해당 오브젝트는 삭제된다.

예시

  • PersistentVolume 객체의 삭제를 방지하는 kubernetes.io/pv-protection이 있다.
  • pod에서 해당 볼륨을 사용중이라면 pv 삭제를 시도하더라고 pod가 정리되기 전까지는 삭제되지 않는다.

0개의 댓글

관련 채용 정보