[패스트캠퍼스 챌린지 16일차] '76가지 DevOps 모의 실무 예제: AWS 기반 인프라 구축부터 재해복구, 보안까지' 강의 후기 본문
[패스트캠퍼스 챌린지 16일차] '76가지 DevOps 모의 실무 예제: AWS 기반 인프라 구축부터 재해복구, 보안까지' 강의 후기
ITst 2025. 4. 16. 15:02본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
※ 챌린지 URL: https://abit.ly/lisbva
오늘은 쿠버네티스의 주요 백그라운드 컴포넌트들이라고 하는 kube-controller-manager, cloud-controller-manager, kubelet, kube-proxy에 대해 학습했다. 이 컴포넌트들은 클러스터 운영의 세부적인 제어와 상태 유지를 담당하며, 쿠버네티스가 선언적 상태를 유지하고 자동화된 조치를 취할 수 있도록 기반을 제공한다.
먼저 kube-controller-manager는 여러 종류의 컨트롤러들을 실행하는 역할을 한다. 컨트롤러란 쿠버네티스 리소스의 실제 상태와 선언된 상태(desired state)를 비교하고, 그 차이를 해소하기 위한 자동화 로직이다. 예를 들어, 노드 컨트롤러는 노드의 상태를 감시하고 일정 시간 동안 heartbeat가 도착하지 않으면 해당 노드를 unreachable 상태로 처리하고, 이후 pod를 다른 노드로 재배치하는 식으로 동작한다. 이처럼 컨트롤러는 장애 대응이나 리소스 조율 측면에서 중요한 기능을 수행한다.
cloud-controller-manager는 클라우드 환경에서만 사용하는 컴포넌트로, 쿠버네티스 리소스를 클라우드 벤더의 인프라 API와 연결해주는 역할을 한다. on-prem 환경에서는 사용되지 않으며, 대표적으로 노드 등록 시 클라우드의 인스턴스 상태를 기준으로 처리하거나, 로드밸런서 생성 같은 작업을 지원한다. 이 컴포넌트를 통해 쿠버네티스는 다양한 클라우드에 대한 추상화를 유지할 수 있다.
kubelet은 각 노드에서 실행되며, 실제 컨테이너를 실행시키는 핵심 에이전트다. kube-apiserver로부터 전달받은 파드 스펙을 바탕으로 컨테이너 런타임과 연동해 파드를 실행하고, 주기적으로 상태를 보고한다. 프로세스 단위로 동작하며, 로그나 상태 확인은 시스템 레벨에서 진행할 수 있다는 점이 운영 측면에서 중요하게 느껴졌다. 특히 직접 minikube에 접속해 kubelet의 로그를 확인하고 구성 파일을 살펴보는 실습이 도움이 되었다.
마지막으로 kube-proxy는 클러스터 내부 네트워크를 관리하는 구성 요소다. 각 노드에서 실행되며, 서비스 IP를 실제 파드 IP로 매핑해주는 기능을 수행한다. 초기에는 userspace 방식으로 시작했지만, iptables를 거쳐 현재는 ipvs를 많이 사용한다. ipvs는 더 많은 로드밸런싱 알고리즘을 지원하고 성능도 높아 대규모 환경에서 선호된다. 쿠버네티스가 내부적으로 어떻게 네트워크 트래픽을 분배하고 라우팅하는지 이해할 수 있는 좋은 기회였다.
전체적으로 이번 학습은 쿠버네티스의 컨트롤 루프가 어떻게 구현되고, 실제 노드에서 어떤 프로세스들이 동작하며, 내부 네트워크가 어떻게 구성되는지를 이해하는 데 큰 도움이 되었다. 이 컴포넌트들이 잘 작동해야만 클러스터가 안정적으로 유지될 수 있다는 점에서, 운영 관점에서도 반드시 짚고 넘어가야 할 개념들이었다고 생각이 들었다.