kubelet과 kubectl은 쿠버네티스(Kubernetes)에서 중요한 역할을 하는 두 가지 주요 구성 요소입니다. 각각의 역할과 기능에 대해 알아볼게요.
1. kubelet
정의: kubelet은 쿠버네티스 노드에서 실행되는 에이전트로, 각 노드에 설치된 필수 컴포넌트입니다.
역할: 쿠버네티스 클러스터에서 노드의 상태를 모니터링하고, 마스터 노드에서 받은 명령을 따라 파드를 생성, 시작, 유지하는 역할을 합니다.
주요 기능:
파드 관리: kubelet은 API 서버로부터 파드 사양을 받아서 파드를 생성하고 컨테이너를 실행합니다. 이후 컨테이너의 상태를 지속적으로 확인하고 문제가 생기면 재시작을 시도합니다.
헬스체크: 각 컨테이너와 파드의 상태와 헬스체크를 수행해, 문제가 있으면 해당 정보를 API 서버로 보고합니다.
컨테이너 런타임 통합: kubelet은 컨테이너 런타임(예: Docker, containerd 등)과 통합되어 파드 내부의 컨테이너를 관리합니다.
실행 환경: 각 쿠버네티스 노드(마스터/워커 모두)에 kubelet이 설치되어 있어야 합니다.
2. kubectl
정의: kubectl은 쿠버네티스 클러스터를 제어하는 CLI(Command Line Interface) 도구로, 사용자가 클러스터에 명령을 전달할 수 있는 인터페이스입니다.
역할: kubectl은 API 서버에 직접 연결되어 있어, 사용자나 개발자가 쿠버네티스 클러스터에 명령어를 입력하여 클러스터와 상호작용하도록 합니다.
주요 기능:
리소스 관리: kubectl을 사용하여 파드, 서비스, 네임스페이스 등 쿠버네티스 리소스를 생성, 조회, 업데이트, 삭제할 수 있습니다.
디버깅 및 모니터링: kubectl logs, kubectl describe 등 명령어를 통해 파드의 상태와 로그를 조회하고 문제를 해결할 수 있습니다.
배포 관리: kubectl apply 명령어를 사용해 YAML 파일로 정의된 애플리케이션을 클러스터에 배포할 수 있으며, kubectl rollout 명령어로 배포 상태를 관리할 수 있습니다.