From 7d58e159afb3033d46ef1473c4ee78388478b102 Mon Sep 17 00:00:00 2001 From: kaffa Date: Mon, 20 Apr 2026 08:20:39 +0900 Subject: [PATCH] =?UTF-8?q?metallb:=20raise=20controller=20mem=20limit=206?= =?UTF-8?q?4Mi=E2=86=92256Mi=20(OOM=20fix)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2026-04-20-metallb-controller-oom-fix.md | 42 +++++++++++++++++++ infra/network/metallb.md | 11 ++++- 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 history/2026-04-20-metallb-controller-oom-fix.md diff --git a/history/2026-04-20-metallb-controller-oom-fix.md b/history/2026-04-20-metallb-controller-oom-fix.md new file mode 100644 index 0000000..dc85d8f --- /dev/null +++ b/history/2026-04-20-metallb-controller-oom-fix.md @@ -0,0 +1,42 @@ +--- +title: MetalLB controller OOMKilled 수정 (limit 상향) +date: 2026-04-20 +tags: [history, metallb, k3s, oom] +--- + +## 현상 + +`metallb-controller-685b4dc4d8-jzxwj` 파드가 15시간 동안 5회 재시작. +`describe`로 확인한 이전 종료 상태가 `OOMKilled / Exit 137`. + +## 근본원인 + +- controller limit: **64Mi** (helm 기본값) +- 실사용: **62Mi** (평상시만으로도 이미 한계) +- cert-rotation · webhook 서버 · reconcile 시 메모리 spike → OOM + +metallb v0.15는 cert-controller와 webhook server가 controller 프로세스 안에서 실행되어 기본 64Mi로는 부족. speaker는 이미 256Mi/128Mi였는데 controller만 1/4 수준이었음. + +## 조치 + +`helm upgrade --reuse-values`로 controller 리소스 상향: + +```bash +helm upgrade metallb metallb/metallb -n metallb-system --reuse-values \ + --set controller.resources.limits.memory=256Mi \ + --set controller.resources.requests.memory=128Mi +``` + +결과: +- revision 3으로 배포 +- 새 파드 `metallb-controller-6c846cbc7-gpz7q` Running +- 적용된 resources: `limits.memory=256Mi, requests.memory=128Mi` +- 재시작 0회로 안정 + +## 교훈 + +helm 기본 resources가 운영 환경에서 부족한 경우가 흔함. 설치 시점에 반드시 기본값 리뷰 필요. 이번 외에도 chart 기본값으로 영구화가 안 돼 있던 건들은 [[2026-04-19-k3s-resource-requests|history]] 참고. + +## 정본 링크 + +- [[metallb|infra/network/metallb]] diff --git a/infra/network/metallb.md b/infra/network/metallb.md index 4321216..739b64c 100644 --- a/infra/network/metallb.md +++ b/infra/network/metallb.md @@ -1,6 +1,6 @@ --- title: MetalLB (K3s LoadBalancer) -updated: 2026-03-26 +updated: 2026-04-20 tags: [infra, k3s, metallb, networking] --- @@ -21,6 +21,15 @@ K3s 내장 ServiceLB(Klipper)는 비활성화 (`--disable servicelb`, kr2/kr1 co | Speaker | DaemonSet (노드당 1개, 3개) | | Controller | Deployment (1개) | +## 리소스 설정 + +| 컴포넌트 | requests mem | limits mem | +|---------|-------------|-----------| +| controller | 128Mi | 256Mi | +| speaker | 128Mi | 256Mi | + +controller는 cert-rotation · webhook 서버 때문에 기본 limit(64Mi)으로는 OOM 발생. speaker와 동일 수준으로 맞춤. 이력: [[2026-04-20-metallb-controller-oom-fix|history]] + ## IP 할당 현황 | IP | Service | Namespace | Port |