Information in this document may be out of date

This document has an older update date than the original, so the information it contains may be out of date. If you're able to read English, see the English version for the most up-to-date information: Finalizers

ํŒŒ์ด๋„๋ผ์ด์ €

ํŒŒ์ด๋„๋ผ์ด์ €๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์™„์ „ํžˆ ์‚ญ์ œํ•˜๊ธฐ ์ด์ „, ์‚ญ์ œ ํ‘œ์‹œ๋ฅผ ์œ„ํ•ด ํŠน์ • ์กฐ๊ฑด์ด ์ถฉ์กฑ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜๋„๋ก ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์†ํ•œ ํ‚ค(namespaced key)์ด๋‹ค. ํŒŒ์ด๋„๋ผ์ด์ €๋Š” ์‚ญ์ œ ์™„๋ฃŒ๋œ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์†Œ์œ ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ •๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ปจํŠธ๋กค๋Ÿฌ์—๊ฒŒ ์•Œ๋ฆฐ๋‹ค.

ํŒŒ์ด๋„๋ผ์ด์ €๋ฅผ ๊ฐ€์ง„ ํŠน์ •ํ•œ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์‚ญ์ œํ•˜๋„๋ก ์ง€์‹œํ•  ๋•Œ, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API๋Š” .metadata.deletionTimestamp์„ ๋ง๋ถ™์—ฌ ์‚ญ์ œํ•˜๋„๋ก ์˜ค๋ธŒ์ ํŠธ์— ํ‘œ์‹œํ•˜๋ฉฐ, 202 ์ƒํƒœ์ฝ”๋“œ(HTTP "Accepted")์„ ๋ฆฌํ„ดํ•œ๋‹ค. ๋Œ€์ƒ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ Terminating ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋™์•ˆ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ ๋˜๋Š” ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋Š” ํ•˜๋‚˜์˜ ํŒŒ์ด๋„๋ผ์ด์ €์—์„œ ์ •์˜ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ •์˜๋œ ์ž‘์—…์ด ์™„๋ฃŒ ํ›„์—, ๊ทธ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋Œ€์ƒ ์˜ค๋ธŒ์ ํŠธ๋กœ๋ถ€ํ„ฐ ์—ฐ๊ด€๋œ ํŒŒ์ด๋„๋ผ์ด์ €์„ ์‚ญ์ œํ•œ๋‹ค. metadata.finalizers ํ•„๋“œ๊ฐ€ ๋น„์–ด ์žˆ์„ ๋•Œ, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์‚ญ์ œ๊ฐ€ ์™„๋ฃŒ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์‚ญ์ œํ•œ๋‹ค.

ํŒŒ์ด๋„๋ผ์ด์ €๊ฐ€ ๋ฆฌ์†Œ์Šค๋“ค์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์ œ์–ดํ•˜๋„๋ก ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•˜๋‚˜์˜ ํŒŒ์ด๋„๋ผ์ด์ €๋ฅผ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋Œ€์ƒ ๋ฆฌ์†Œ์†Œ๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์ „์— ์—ฐ๊ด€๋œ ๋ฆฌ์†Œ์Šค๋“ค ๋˜๋Š” ์ธํ”„๋ผ๋ฅผ ์ •๋ฆฌํ•˜๋„๋ก ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŒŒ์ด๋„๋ผ์ด์ €(Finalizer)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์ „ ํŠน์ • ์ •๋ฆฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์ปจํŠธ๋กค๋Ÿฌ(Controller)์— ๊ฒฝ๊ณ ํ•˜์—ฌ ๋ฆฌ์†Œ์Šค์˜ ๊ฐ€๋น„์ง€(Garbage) ์ˆ˜์ง‘์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŒŒ์ด๋„๋ผ์ด์ €๋Š” ๋ณดํ†ต ์‹คํ–‰ํ•  ์ฝ”๋“œ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋Œ€์‹  ํŒŒ์ด๋„๋ผ์ด์ €๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์–ด๋…ธํ…Œ์ด์…˜๊ณผ ๋น„์Šทํ•˜๊ฒŒ ํŠน์ • ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ํ‚ค๋“ค์˜ ๋ชฉ๋ก์ด๋‹ค. ์ผ๋ถ€ ํŒŒ์ด๋„๋ผ์ด์ €๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์ž๋™์œผ๋กœ ์ง€์ •ํ•˜์ง€๋งŒ, ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

ํŒŒ์ด๋„๋ผ์ด์ €์˜ ์ž‘๋™ ๋ฐฉ์‹

๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ด ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด metadata.finalizers ํ•„๋“œ์— ํŒŒ์ด๋„๋ผ์ด์ €๋ฅผ ๋ช…์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•˜๋ ค ํ•  ๋•Œ๋Š” ์‚ญ์ œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” API ์„œ๋ฒ„๊ฐ€ finalizers ํ•„๋“œ์˜ ๊ฐ’์„ ์ธ์‹ํ•˜๊ณ  ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  • ์‚ญ์ œ๋ฅผ ์‹œ์ž‘ํ•œ ์‹œ๊ฐ๊ณผ ํ•จ๊ป˜ metadata.deletionTimestamp ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋„๋ก ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค.
  • ์˜ค๋ธŒ์ ํŠธ์˜ metadata.finalizers ํ•„๋“œ๊ฐ€ ๋น„์›Œ์งˆ ๋•Œ๊นŒ์ง€ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์ œ๊ฑฐ๋˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.
  • 202 ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค(HTTP "Accepted").

์ด ํŒŒ์ด๋„๋ผ์ด์ €๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋Š” metadata.deletionTimestamp๋ฅผ ์„ค์ •ํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์—…๋ฐ์ดํŠธ ๋˜์—ˆ์Œ์„ ์ธ์ง€ํ•˜์—ฌ ์˜ค๋ธŒ์ ํŠธ์˜ ์‚ญ์ œ๊ฐ€ ์š”์ฒญ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๊ทธ ๋ฆฌ์†Œ์Šค์— ์ง€์ •๋œ ํŒŒ์ด๋„๋ผ์ด์ €์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋ ค ์‹œ๋„ํ•œ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ๋Š” ํŒŒ์ด๋„๋ผ์ด์ € ์กฐ๊ฑด์ด ์ถฉ์กฑ๋  ๋•Œ ๋งˆ๋‹ค ๋ฆฌ์†Œ์Šค์˜ finalizers ํ•„๋“œ์—์„œ ํ•ด๋‹น ํ‚ค(key)๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค. finalizers ํ•„๋“œ๊ฐ€ ๋น„์›Œ์ง€๋ฉด deletionTimestamp ํ•„๋“œ๊ฐ€ ์„ค์ •๋œ ์˜ค๋ธŒ์ ํŠธ๋Š” ์ž๋™์œผ๋กœ ์‚ญ์ œ๋œ๋‹ค. ๋˜ํ•œ ํŒŒ์ด๋„๋ผ์ด์ €๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๋ฆฌ๋˜์ง€ ์•Š๋Š” ๋ฆฌ์†Œ์Šค๊ฐ€ ์‚ญ์ œ๋˜์ง€ ์•Š๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŒŒ์ด๋„๋ผ์ด์ €์˜ ์ผ๋ฐ˜์ ์ธ ์˜ˆ๋กœ๋Š” ํผ์‹œ์Šคํ„ดํŠธ ๋ณผ๋ฅจ(Persistent Volume) ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์‹ค์ˆ˜๋กœ ์‚ญ์ œ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” kubernetes.io/pv-protection๊ฐ€ ์žˆ๋‹ค. ํŒŒ๋“œ๊ฐ€ ํผ์‹œ์Šคํ„ดํŠธ ๋ณผ๋ฅจ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์‚ฌ์šฉ ์ค‘์ผ ๋•Œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” pv-protection ํŒŒ์ด๋„๋ผ์ด์ €๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ํผ์‹œ์Šคํ„ดํŠธ ๋ณผ๋ฅจ์„ ์‚ญ์ œํ•˜๋ ค ํ•˜๋ฉด Terminating ์ƒํƒœ๊ฐ€ ๋˜์ง€๋งŒ ํŒŒ์ด๋„๋ผ์ด์ €๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์‚ญ์ œํ•  ์ˆ˜ ์—†๋‹ค. ํŒŒ๋“œ๊ฐ€ ํผ์‹œ์Šคํ„ดํŠธ ๋ณผ๋ฅจ์˜ ์‚ฌ์šฉ์„ ์ค‘์ง€ํ•˜๋ฉด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ pv-protection ํŒŒ์ด๋„๋ผ์ด์ €๋ฅผ ํ•ด์ œํ•˜๊ณ  ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ณผ๋ฅจ์„ ์‚ญ์ œํ•œ๋‹ค.

์†Œ์œ ์ž ์ฐธ์กฐ, ๋ ˆ์ด๋ธ”, ํŒŒ์ด๋„๋ผ์ด์ €

๋ ˆ์ด๋ธ”(Label)์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ์†Œ์œ ์ž ์ฐธ์กฐ(Owner reference)๋Š” ์˜ค๋ธŒ์ ํŠธ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์„ค๋ช…ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ(Controller)๊ฐ€ ํŒŒ๋“œ์™€ ๊ฐ™์€ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ๋ ˆ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๋ จ ์˜ค๋ธŒ์ ํŠธ์˜ ๊ทธ๋ฃน์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”์ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์žก(Job)์ด ํ•˜๋‚˜ ์ด์ƒ์˜ ํŒŒ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์žก ์ปจํŠธ๋กค๋Ÿฌ๋Š” ํ•ด๋‹น ํŒŒ๋“œ์— ๋ ˆ์ด๋ธ”์„ ์ ์šฉํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ๋™์ผํ•œ ๋ ˆ์ด๋ธ”์„ ๊ฐ–๋Š” ํŒŒ๋“œ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”์ ํ•œ๋‹ค.

๋˜ํ•œ, ์žก ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ด๋Ÿฌํ•œ ํŒŒ๋“œ์— ์†Œ์œ ์ž ์ฐธ์กฐ๋„ ์ถ”๊ฐ€ํ•˜์—ฌ ํŒŒ๋“œ๋ฅผ ์ƒ์„ฑํ•œ ์žก์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ์ด ํŒŒ๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์žก์„ ์‚ญ์ œํ•˜๋ฉด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์‚ฌ์šฉ์ž ์ฐธ์กฐ(๋ ˆ์ด๋ธ” ๋Œ€์‹ )๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ์–ด๋–ค ํŒŒ๋“œ๊ฐ€ ์ •๋ฆฌ๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ๊ฒฐ์ •ํ•œ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๋˜ํ•œ ์‚ญ์ œ ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์†Œ์œ ์ž ์ฐธ์กฐ๋ฅผ ์‹๋ณ„ํ•  ๋•Œ ํŒŒ์ด๋„๋ผ์ด์ €๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.

๊ฒฝ์šฐ์— ๋”ฐ๋ผ ํŒŒ์ด๋„๋ผ์ด์ €๋Š” ์ข…์† ์˜ค๋ธŒ์ ํŠธ์˜ ์‚ญ์ œ๋ฅผ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋กœ ์ธํ•ด ๋Œ€์ƒ ์†Œ์œ ์ž ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์™„์ „ํžˆ ์‚ญ์ œ๋˜์ง€ ์•Š๊ณ  ์˜ˆ์ƒ๋ณด๋‹ค ์˜ค๋ž˜ ์œ ์ง€๋  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋Œ€์ƒ ์†Œ์œ ์ž ๋ฐ ์ข…์† ๊ฐ์ฒด์— ๋Œ€ํ•œ ํŒŒ์ด๋„๋ผ์ด์ €์™€ ์†Œ์œ ์ž ์ฐธ์กฐ๋ฅผ ํ™•์ธํ•ด ์›์ธ์„ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค.

๋‹ค์Œ ๋‚ด์šฉ

์ตœ์ข… ์ˆ˜์ • April 27, 2023 at 10:18 AM PST: [ko] Update outdated files in dev-1.26-ko.1 (M34-M41) (09724a67e6)