쿠버네티스 조정 루프

Kubernetes reconciliation loop

컨트롤러가 원하는 상태와 실제 상태의 차이를 반복해서 메웁니다.

···
html
<div class="stage" data-phase="0"><div class="title">DESIRED 3 → ACTUAL</div><div class="row counters"><div class="panel">desired <b>3</b></div><div class="panel actual">actual <b>2</b></div></div><div class="row slots"><div class="panel">pod 1</div><div class="panel">pod 2</div><div class="panel missing">empty</div></div><div class="sub">controller compares and repairs</div></div>
css
.stage{width:min(94vw,760px);height:min(88vh,330px);padding:clamp(9px,2.6vmin,20px);border:1px solid var(--line);border-radius:14px;background:var(--surface);font:600 clamp(12px,2.5vmin,16px)/1.3 "Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo",sans-serif;display:flex;flex-direction:column;gap:clamp(6px,1.7vmin,12px);overflow:hidden;position:relative}.stage *{min-width:0}.stage .title{color:var(--accent);font-weight:800}.stage .sub{color:var(--muted)}.stage .row{display:flex;align-items:center;gap:clamp(5px,1.6vmin,12px)}.stage .panel{border:1px solid var(--line);border-radius:8px;background:var(--bg);padding:clamp(6px,1.6vmin,12px)}.stage .mono{font-family:ui-monospace,SFMono-Regular,monospace;font-size:clamp(12px,2.5vmin,15px)}.stage .grow{flex:1}.stage .on{color:var(--accent)}.counters{justify-content:space-between}.counters .panel{width:45%;display:flex;justify-content:space-between}.slots{flex:1;justify-content:center}.slots .panel{width:29%;text-align:center}.missing{border-style:dashed!important;color:var(--muted)}.stage[data-phase="1"] .missing{border-color:var(--accent)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 15%,transparent)}.stage[data-phase="2"] .missing{border-style:solid!important;background:color-mix(in srgb,var(--accent) 18%,var(--surface));color:var(--accent)}.stage[data-phase="2"] .missing:before{content:'pod 3';}.stage[data-phase="2"] .missing{font-size:0}.stage[data-phase="2"] .missing:before{font-size:clamp(12px,2.5vmin,16px)}.stage[data-phase="2"] .actual b{font-size:0}.stage[data-phase="2"] .actual b:after{content:'3';font-size:clamp(12px,2.5vmin,16px);color:var(--accent)}
js
const stage=document.querySelector('.stage');let phase=0;function advance(){phase=(phase+1)%3;stage.dataset.phase=String(phase)}const timer=setInterval(advance,1200);stage.addEventListener('pointerdown',()=>{clearInterval(timer);advance()})

쿠버네티스 컨트롤러는 선언된 복제 수 같은 목표를 읽고 현재 상태를 관찰합니다. 차이가 있으면 API를 통해 자원을 만들거나 제거하고 다시 관찰합니다.

데모는 원하는 파드 3개 중 하나가 사라졌을 때 빈 자리가 다시 채워지는 과정을 보여줍니다. 조정은 즉시 완료되는 단일 명령이 아니라 반복 실행되는 수렴 과정입니다.

언제 쓰나

파드 장애 후 자동 복구나 선언형 운영이 어떻게 작동하는지 이해할 때 중요합니다.

페이지로 열기 ↗