본문으로 이동
카카오가 K8s CNI Cilium의 메모리 누수 버그를 해결하는 방법 / if(kakao)2022
컨퍼런스

카카오가 K8s CNI Cilium의 메모리 누수 버그를 해결하는 방법 / if(kakao)2022

if kakao 카카오 · YouTube

원문 보기

AI 핵심 요약

DKOS에서 Cilium 에이전트의 메모리 사용량이 계속 증가해 OOM으로 재시작되면서, 노드 파드의 네트워크가 일시적으로 끊길 위험이 있었다. Go 런타임의 `pprof`로 힙 프로파일을 수집하고, escape analysis와 어셈블리 분석을 통해 넷링크 메시지 버퍼가 힙에 할당되는 경로를 좁혔다. 스택 트레이스를 따라가 IP 라우팅 등 네트워크 정보를 캐시에 계속 쌓고 비우지 않는 Cilium 버그를 찾아, 우선 해당 기능을 끄고 이후 수정 사항을 PR로 제출했다. 배포 후 OOM은 더 이상 발생하지 않았으며, 메모리 누수 디버깅은 프로파일러로 할당 지점을 찾은 뒤 참조가 유지되는 코드를 직접 분석하는 것이 핵심이라고 설명했다.

  • OOM이 발생하면 메모리 제한을 늘리기 전에 사용량이 회복되는 구간이 있는지 살펴 누수와 설정 문제를 구분한다.
  • Go의 `pprof`는 할당 지점을 찾는 데 유용하며, 스택 트레이스를 따라가면 분석 범위를 좁힐 수 있다.
  • Go 컴파일러의 escape analysis와 어셈블리 출력을 확인하면 값이 스택에 놓이는지 힙에 할당되는지 파악할 수 있다.
  • 프로파일러는 메모리 할당 위치를 보여주지만, 할당된 객체를 계속 참조하는 코드는 개발자가 직접 추적해야 한다.
  • 긴급 대응으로 문제가 된 Cilium 캐싱 기능을 비활성화하고, 이후 버그를 수정해 PR을 작성했다.

소개

CNI는 Kubernetes의 필수 컴포넌트입니다. 그러므로 Kubernetes를 개발/운영하는 엔지니어라면 누구나 CNI 이슈를 경험했을 텐데요. CNI Plugin인 Cilium의 메모리 누수 버그를 분석/해결하는 과정에서 얻은 경험과 지식을 공유합니다. 특히 누수 디버깅에 가장 중요한 프로그램의 Stack과 Heap 구조에 대해 알아보고 이를 어떻게 활용하는지 이야기합니다. #Kubernetes #CNI #Cilium #Golang 카카오에서 클라우드 플랫폼을 개발하고 있는 규입니다. 발표자료 보기 👉https://speakerdeck.com/kakao/ifkakao22-55 if(kakao)2022에 대한 자세한 정보는 👉 https://if.kakao.com if(kakao)2022에 대한 문의는 👉 if@kakaocorp.com #카카오 #이프카카오 #개발자컨퍼런스 #기술 #개발 #ifkakao2022

비슷한 학습 자료

컨퍼런스 if kakao

은행의 세밀한 내부 통제 환경에서 인프라 리소스를 최적화하고, 효율적으로 관리하기 위해 On-premise Kubernetes 아키텍처를 구축했습니다. 클러스터 프로비저닝 과정부터 망 분리 환경에서의 네트워크 통제 및 운영 정책 관리 방법을 소개합니다. #인프라 #리소스최적화 #온프렘 #쿠버네티스 #아키텍처 #망분리 카카오뱅크에서 On-Premise Kubernetes 엔지니어링을 담당하고 있는 Robin입니다. 발표자료 보기 👉 https://speakerdeck.com/kakao/ifkakao24-72 if(kakaoAI)2024에 대한 자세한 정보는 👉 https://if.kakao.com #카카오 #이프카카오 #개발자컨퍼런스 #AI #기술 #개발 #ifkakaoAI2024

데브옵스 · 인프라 클라우드

컨퍼런스 if kakao

판교 Data Center 화재 이후, 카카오의 Kubernetes 구조를 개선한 경험과 이를 구현하면서 겪었던 다양한 문제와 고민에 대해 이야기합니다. Data Center 화재 시, 실제 Kubernetes에 발생했던 여러 문제를 공유하고, 고가용성 Kubernetes 클러스터를 제공하기 위한 설계 아이디어를 공유합니다. 또한 고가용성을 위해 고민했던 etcd, CNI Plugin에 대해서도 소개합니다. #cloud #kubernetes #cni 카카오의 Kubernetes as a Service를 개발하고 있는 Gyu입니다. 발표자료 보기 👉 https://speakerdeck.com/kakao/ifkakao24-71 if(kakaoAI)2024에 대한 자세한 정보는 👉 https://if.kakao.com #카카오 #이프카카오 #개발자컨퍼런스 #AI #기술 #개발 #ifkakaoAI2024

데브옵스 · 인프라 클라우드

컨퍼런스 if kakao

NIC에서 GPU로 zero copy로 데이터를 보내는 방법을 소개합니다. #Cloud 카카오엔터프라이즈에서 리눅스 커널을 개발하고 있는 Herbert입니다. 발표자료 보기 👉 https://speakerdeck.com/kakao/ifkakao24-58 if(kakaoAI)2024에 대한 자세한 정보는 👉 https://if.kakao.com #카카오 #이프카카오 #개발자컨퍼런스 #AI #기술 #개발 #ifkakaoAI2024

네트워크 시스템 · 운영체제

컨퍼런스 if kakao

Node.js 애플리케이션의 메모리 지표의 의미와, 실제로 어떤 Native API를 사용하여 데이터를 측정하는지, Node.js Native API의 데이터 측정 방식을 살펴봅니다. #모니터링 #node.js #성능 지표 #react ssr #prometheus 카카오페이 Frontend 개발자 John입니다. Frontend 개발에 필요한 인프라 관련 업무를 주로 담당합니다. 발표자료 보기 👉 https://speakerdeck.com/kakao/ifkakao24-40 if(kakaoAI)2024에 대한 자세한 정보는 👉 https://if.kakao.com #카카오 #이프카카오 #개발자컨퍼런스 #AI #기술 #개발 #ifkakaoAI2024

백엔드 데브옵스 · 인프라

컨퍼런스 if kakao

카카오 인프라 제공자 관점에서 Kubernetes 서비스 네트워킹을 지원하는 방법과 변화 과정을 소개합니다. #Infrastructure #Networking #Kubernetes 카카오에서 로드 밸런싱 서비스를 운영하며 개발하고 있는 알란입니다. 발표자료 보기 👉https://speakerdeck.com/kakao/ifkakao22-53 if(kakao)2022에 대한 자세한 정보는 👉 https://if.kakao.com if(kakao)2022에 대한 문의는 👉 if@kakaocorp.com #카카오 #이프카카오 #개발자컨퍼런스 #기술 #개발 #ifkakao2022

데브옵스 · 인프라 네트워크

컨퍼런스 if kakao

Preview Cloud @if(kakao)2022

컨퍼런스 if kakao

if(kakao)2022 컨퍼런스에서 Cloud 관련 기술 발표 트랙을 소개합니다. 04:17 1. Kubernetes provisioning: 프로비저닝 툴과의 만남부터 헤어짐까지... by 전민철(rookie.jeon) 카카오에서 클라우드 플랫폼을 개발하고 있는 루키입니다. 04:43 2. Testing Kubernetes Controller: Kubernetes Controller를 위한 테스트코드 작성 by 이완해(scotty.scott) 카카오에서 클라우드 플랫폼을 개발하고 있는 스카티입니다. Human Computer Interaction (HCI) 에 관심이 많으며, 일하면서 틈틈히 개발자를 위한 HCI 라는 주제에 대해 생각해보고 있습니다. 하지만 이번발표에서는 순수하게 개발적인 내용만 다룹니다. 05:01 3. 카카오가 K8s CNI Cilium의 메모리 누수 버그를 해결하는 방법 by 배규태(gyu.gyu) 카카오에서 클라우드 플랫폼을 개발하고 있는 규입니...

소프트웨어 테스트 데브옵스 · 인프라