Resize Now (수동 적용)
Resize Now는 직접 결정한 시점에 추천 값을 적용합니다. 컨테이너 하나씩, 어떤 값을 반영할지 완전히 제어할 수 있습니다. Realtime Resizing을 사용할 수 없는 Smart Sizing with HPA / Autopilot 워크로드를 포함해 모든 워크로드에서 동작합니다.
Smart Sizing 탭의 컨테이너 카드에서 Resize Now를 클릭합니다:
Resize Method
| 방법 | 동작 | 사용 가능 조건 |
|---|---|---|
| Edit CRD (Restart Required) | 워크로드 매니페스트 (spec.template.spec.containers[*].resources)를 패치합니다. Pod는 워크로드의 일반적인 롤링 업데이트 전략으로 재시작됩니다 | 항상, 모든 Kubernetes 버전, 모든 워크로드 종류 |
| In-Place Pod Resize (Live Resize) | 실행 중인 각 Pod에 /resize 요청을 보냅니다. 새 CPU/메모리가 Pod를 재시작하지 않고 적용됩니다 | 클러스터 지원 필요 (아래 참고). Wave가 런타임에 확인해 지원하지 않으면 옵션을 비활성화합니다 |
Edit CRD 라벨은 콘솔의 버튼과 동일합니다. 이름과 달리, 이 방법은 Wave Custom Resource가 아니라 워크로드 자체의 매니페스트 (Deployment나 StatefulSet의 spec.template.spec.containers[*].resources)를 패치하며, CRD Mode와는 무관합니다.
In-Place Pod Resize 클러스터 요구사항
| Kubernetes 버전 | In-Place 상태 |
|---|---|
| < 1.27 | 사용 불가. Edit CRD를 사용하세요 |
| 1.27~1.32 | Alpha, InPlacePodVerticalScaling 기능 게이트를 수동으로 활성화해야 함 |
| 1.33~1.34 | 기본 활성화 |
| ≥ 1.35 | GA |
모달이 열리면 Wave가 클러스터에 대해 dry-run으로 지원 여부를 확인합니다. in-place resize를 사용할 수 없으면 라디오 옵션이 이유를 설명하는 툴팁과 함께 비활성화됩니다.
Container resize policy. 컨테이너의 resizePolicy는 리소스별 항목의 목록이며, 각 항목은 resourceName과 restartPolicy를 쌍으로 갖습니다. CPU나 메모리 항목의 restartPolicy가 RestartContainer로 설정되어 있으면 해당 리소스는 in-place로 리사이즈할 수 없고, 관련 입력란이 비활성화됩니다. 실시간 리사이즈를 허용하려면 해당 리소스의 restartPolicy를 NotRequired로 설정하세요:
resizePolicy:
- resourceName: cpu
restartPolicy: NotRequired
- resourceName: memory
restartPolicy: NotRequired값 선택하기
네 개의 필드 (CPU request, CPU limit, memory request, memory limit)마다 각각 체크박스가 있어, 부분 업데이트 (CPU만, request만)도 가능합니다:
- 입력란에는 추천 값이 미리 채워지며, 현재 값이 대체값(fallback)으로, 추천 값은 힌트(
Rec: 0.22 CPU)로 표시됩니다. - 체크된 필드만 적용됩니다. 최소 하나는 활성화해야 하고, 0 값은 거부됩니다. Wave는 request나 limit에 0을 클러스터에 절대 기록하지 않습니다.
- In-Place 모드에서는 메모리 limit 필드를 사용할 수 없습니다 (in-place 경로는 메모리 request만 적용합니다).
Copy YAML은 체크된 값에 대한 리소스 스니펫을 생성합니다. 콘솔 대신 GitOps 파이프라인으로 변경 사항을 반영해야 할 때 유용합니다.
컨테이너에서 처음 Resize Now를 실행하면 원래 값도 캡처되어, Restore Original 버튼을 사용할 수 있게 됩니다.
문제 해결
| 증상 | 원인 / 해결 |
|---|---|
| In-Place 옵션이 비활성화됨 | 클러스터가 dry-run 지원 확인에 실패했습니다: Kubernetes가 너무 오래되었거나, 기능 게이트가 꺼져 있거나, API가 pod resize를 거부합니다. Edit CRD를 사용하세요 |
| Node 리소스 부족으로 in-place 적용이 거부됨 | 새 request가 Pod가 있는 Node에 들어가지 않습니다. Wave는 Pod를 축출하지 않으므로, 롤아웃으로 재스케줄링하려면 Edit CRD를 사용하세요 |
| 몇 분 안에 매니페스트 변경이 되돌아감 | Argo CD auto-sync가 drift를 감지해 Git 상태로 복원했습니다. 이 워크로드의 auto-sync를 끄거나, Git을 통해 변경을 적용하세요 (Copy YAML 사용) |
| 0 값 오류로 저장이 거부됨 | 활성화된 필드에 사용할 수 있는 값이 없습니다 (아직 추천 값이 없음). 체크를 해제하거나 값을 직접 입력하세요 |
| 모달이 읽기 전용이고 "Managed by CRD" 툴팁이 표시됨 | 콘솔이 CRD 모드입니다. GitOps 플로우를 통해 리소스를 적용하세요 |