서비스는 레이블 조건에 맞는 파드 집합을 찾아 고정된 접근 지점을 제공합니다. 파드가 다시 떠서 IP가 바뀌어도 클라이언트는 서비스 주소를 계속 사용합니다.
데모에서는 한 파드가 사라지고 새 파드가 들어와도 중앙 주소에서 요청이 다른 정상 파드로 이동합니다. 준비되지 않은 파드는 라우팅 대상에서 제외해야 합니다.
언제 쓰나
파드 수와 주소가 자주 바뀌는 앱을 다른 서비스에 안정적으로 연결할 때 사용합니다.
교체되는 파드 앞에 안정적인 네트워크 주소를 둡니다.
<div class="stage" data-phase="0"><div class="title">STABLE ADDRESS</div><div class="service panel">service.local</div><div class="fork"></div><div class="row pods"><div class="panel pod a">pod A</div><div class="panel pod b">pod B</div><div class="panel pod c">pod C</div></div><div class="sub">endpoint set follows healthy pods</div></div>.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)}.service{text-align:center;border-color:var(--accent);color:var(--accent)}.fork{height:clamp(16px,4vmin,32px);width:2px;background:var(--accent);align-self:center;position:relative}.fork:after{content:'';position:absolute;bottom:0;left:-100px;width:200px;border-top:2px solid var(--accent)}.pods{justify-content:space-around;flex:1;align-items:flex-start}.pods .pod{width:27%;text-align:center;transition:opacity .3s,transform .3s}.stage[data-phase="1"] .pod.a{color:var(--muted);border-style:dashed;transform:translateY(9px)}.stage[data-phase="2"] .pod.a{background:color-mix(in srgb,var(--accent) 15%,var(--surface))}.stage[data-phase="2"] .pod.a:after{content:' · new'}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()})서비스는 레이블 조건에 맞는 파드 집합을 찾아 고정된 접근 지점을 제공합니다. 파드가 다시 떠서 IP가 바뀌어도 클라이언트는 서비스 주소를 계속 사용합니다.
데모에서는 한 파드가 사라지고 새 파드가 들어와도 중앙 주소에서 요청이 다른 정상 파드로 이동합니다. 준비되지 않은 파드는 라우팅 대상에서 제외해야 합니다.
파드 수와 주소가 자주 바뀌는 앱을 다른 서비스에 안정적으로 연결할 때 사용합니다.