쿠버네티스 용례 살펴 보기, 거기에 창시자의 경험을 더한
“한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.”
업무적으로 많이 보고 배웠던 내용들을 마치 지도로 그려주듯 잘 정리해놓은 “쿠버네티스 창시자에게 배우는 모범 사례” 라는 책을 리뷰하게 되었다.
10월 도서 리뷰 목록에서 이 책을 보자마자, 리뷰 도서는 이 책 밖에 없다고 생각했고, 꼭 이 책을 리뷰하고 싶다고 신청서에 한 줄 글을 남겼다.
그 덕분에 그 동안 업무적으로 반복했던 일부 패턴의 작업들과 납득을 못했던 설계 방식이나 구현 (이걸 도대체 왜 이렇게 쓰고 있나… 이렇게 밖에 쓸 수 없었나… 등), 그리고 무엇보다 “내가 쿠버네티스를 설계 철학에 맞게" 잘 사용하고 있는지에 대해 검토할 수 있는 단계가 되지 않을까 싶었다.
대표적으로 쿠버네티스에서 GPU를 할당하고 회수하는 과정에서 정수형으로 밖에 할당이 안되는 것 (CPU는 소숫점 할당이 가능한데? 왜? GPU는 더 비싸고 귀한데 소숫점으로 밖에 안될까?)이 쿠버네티스 처음 사용하는 시점에서부터 의문이었는데, 그 의문에 대해 답변해주는 것도 무척 인상적이었다.
이는 Ampere 아키텍처 (A30, A100 등의 GPU 카드의 아키텍처) 이상에서만 별도로 제공되고 있고, RTX 이하 버전에서 설계 상의 이슈 때문에 어렵다는 것을 보게 되었고, 내가 정말 고생하면서 설치했던 NCCL 라이브러리를 사용한 분산 학습에 대해서도 언급이 되어 있었다.
(분산 학습 기능은 쿠버네티스에서도 아직 안정화가 안되어 있다고 짤막하게 소개한다. 어쩐지… 기능 구현이 매끄럽지 않다는 느낌이 강하게 들었다.)
전반적으로 새로운 내용을 이해한다는 느낌보다는 이미 사용하고 있는 툴들의 기본 개념이 “어?? 이런 거였어?” 라고 깨달음을 받으면서 책장을 넘겼고, 그 덕분인지 평상시에 자주 다루는 쿠버네티스 오브젝트들은 내용 습득이 정말 빨랐다.
대표적으로 쿠버네티스에서 보안상의 이유로 “잘" 관리되는 시크릿 관리. 시크릿은 쿠버네티스 내부에서 kubectl로 관리하기보다는 외부 애플리케이션 (하시코브 vault, infisical사의 infisical 등)을 통해 운영하고 관리하는 게 훨씬 편했는데, 이 부분에 대해서도 회사 규모나 보안 정책에 따라 분리해서 운영하는 것에 대해 권장하는 것을 볼 수 있었다.
공식 문서 상에 설명은 없지만, 쿠버네티스 리소스 관리 차원에서 cpu limit을 설정하는 것을 권장하지 않는데 그 이유를 구글링해보면 cpu 스로틀링 이슈 때문에 설정하면 안된다는 글들이 종종 보인다.
이것에 대해서도 구체적이지는 않아도 짧게 언급되는데, cpu 스로틀링이란 설정한 리소스 대비 요청한 cpu 리소스가 클 경우 해당 pod의 cpu 사용량을 강제로 낮춰 사용량을 맞추는 프로세스다.
문제는 이 과정에서 latency가 발생하고, 기존 수행 작업이 느려질 수 밖에 없다.
쿠버네티스에서 CPU란 코어 단위로 pod에 할당되는 것처럼 보이나, 실상은 코어를 pod에 할당해서 사용하는 행위가 아니다.
일정 시간 동안 cpu 사용 시간을 측정해서 cpu utilization을 측정하는 행위인데, 이는 곧 기존의 cpu의 단위 시간 동안 점유하고 있는 프로세스들이 스로틀링으로 인해 경합 조건에 들어간다는 의미가 된다.
이 정도 내용까지 이 책에서 바란 게 아니었는데, 예상 외의 보물을 얻은 느낌이었다.
마치 공식 문서에서 설명이 부족한 부분들에 대해 채워주는 느낌? 저자들이 모두 쿠버네티스 개발에 참여했던 사람들이다보니, 어떤 부분에서 운영 인력들이 어려워했고, 그에 대해 답변했는지 충분히 공감이 되는 대목들이 보였다.
쿠버네티스를 어느 정도 다뤄본 사람의 입장에서 이 만큼 “좋은" 책을 보기는 어려울 것 같다.
무엇보다 시중에 쿠버네티스 관련 책들은 너무 두껍다.
쿠버네티스 버전도 매년 새로 release 되고, 과거 버전 support도 빨리 종료되는 시점에 이런 두꺼운 책을 들고 다니면서 보기는 무척 어렵고 (나의 경우 지하철 타고 다니면서 책을 읽기 때문에), 두껍지 않으면서 필요한 내용들이 거의 다 담겨있다.
기타 다른 애플리케이션 (예를 들면 스파크나 카프카, 하둡과 같은 많이 사용하는 애플리케이션들…) 들도 개념서는 책이 워낙 두꺼운데, 애플리케이션 버전 업그레이드가 워낙 빨라서, 개념은 공식 문서로 잡고 모범 사례집을 이렇게 책으로 출간해서 보는 게 학습 속도가 더 빠르지 않을까하는 생각마저 든다.
최근 3개월간 도서 리뷰한 목록들을 살펴보는데, 모두 실무에서 사용해보거나 면접, 이직에 사용하는 도서들이다보니 책에 내 개인적인 경험들을 기록하면서 보니 어쩔 수 없이 나만의 custom 도서들이 되어가는 것 같다.
근데 오히려 좋다. 저저와 내 경험을 덧대어 나가면서 소통하는 느낌마저 있다.
반대로 지난 2년 동안 쿠버네티스 덕분에 밥벌이를 했는데, 시간을 헛으로 보내지 않은 것 같아, 여기에 계속 새로운 것들을 추가해 나가면 될 것 같다.
Ryan