Kubernetes Cluster에서 실제 Application Container가 실행되는 공간은 Worker Node입니다.
하지만 Node는 스스로 Kubernetes 상태를 관리하지 않습니다.
각 Node에는 Kubernetes와 통신하고 Container 실행 상태를 관리하는 핵심 Component가 존재하는데 이것이 바로 Kubelet입니다.
Kubelet은 각 Worker Node에서 실행되는 Agent로, API Server와 통신하며 Pod 실행 상태를 유지하고 Container Runtime을 관리합니다.
| 구성 요소 | 역할 |
|---|---|
| Kubelet | Node 상태 관리 및 Pod 실행 |
| API Server | Cluster 상태 전달 |
| Container Runtime | Container 실행 |
| Kube Proxy | Network 통신 관리 |
Kubelet 구조를 이해하면 Kubernetes가 어떻게 Worker Node에서 Container를 실행하고 유지하는지 알 수 있습니다.
Kubernetes Kubelet이란 무엇인가?
Kubelet은 Kubernetes Node에서 실행되는 핵심 Agent입니다.
API Server로부터 Pod 설정 정보를 전달받고 해당 Node에서 Container가 정상적으로 실행되도록 관리합니다.
주요 역할:
| 기능 | 설명 |
|---|---|
| Pod 실행 | Container 생성 및 관리 |
| 상태 보고 | Node 상태 전달 |
| Health Check | Container 상태 확인 |
| Resource 관리 | CPU, Memory 관리 |
Kubelet은 Kubernetes Cluster와 Worker Node를 연결하는 중요한 Component입니다.
Kubernetes Kubelet이 필요한 이유
Kubernetes Control Plane은 직접 Container를 실행하지 않습니다.
실제 Container 실행은 Worker Node에서 Kubelet이 담당합니다.
구조:
Control Plane
↓
API Server
↓
Kubelet
↓
Container Runtime
↓
Container 실행
Kubelet이 없다면 Kubernetes는 Node에서 Application을 실행하고 관리할 수 없습니다.
Kubernetes Kubelet 동작 구조
Kubelet은 API Server와 지속적으로 통신하면서 Node 상태를 관리합니다.
구조:
| 구성 요소 | 역할 |
|---|---|
| API Server | Pod 정보 전달 |
| Kubelet | Pod 실행 관리 |
| Container Runtime | Container 생성 |
| cAdvisor | Resource 정보 수집 |
동작 과정:
| 단계 | 내용 |
|---|---|
| 1단계 | API Server에서 Pod 정보 확인 |
| 2단계 | Pod Spec 분석 |
| 3단계 | Container Runtime 호출 |
| 4단계 | Container 실행 |
| 5단계 | 상태 보고 |
이 과정을 반복하면서 원하는 상태를 유지합니다.
Kubernetes Kubelet과 Pod 관리
Kubelet은 Node에 배치된 Pod를 직접 관리합니다.
Pod Spec에 정의된 내용을 기준으로 Container를 실행합니다.
관리 항목:
| 항목 | 설명 |
|---|---|
| Container Image | Image 다운로드 |
| Container 실행 | Runtime 호출 |
| Volume 연결 | Storage Mount |
| Network 설정 | 통신 구성 |
Kubelet은 Pod Lifecycle 관리의 핵심 역할을 수행합니다.
Kubernetes Kubelet과 Container Runtime 관계
Kubelet은 직접 Container를 실행하지 않습니다.
Container Runtime Interface(CRI)를 통해 Container Runtime과 통신합니다.
구조:
Kubelet
↓
CRI
↓
Container Runtime
↓
Container
대표적인 Container Runtime:
| Runtime | 특징 |
|---|---|
| containerd | Kubernetes 기본 사용 환경 |
| CRI-O | Kubernetes 전용 Runtime |
| Docker Engine | 과거 많이 사용 |
Kubelet은 다양한 Runtime 환경을 지원합니다.
Kubernetes Kubelet Pod Lifecycle 관리
Kubelet은 Pod의 전체 실행 과정을 관리합니다.
Lifecycle:
| 단계 | 내용 |
|---|---|
| Pending | Pod 생성 대기 |
| Running | Container 실행 |
| Succeeded | 작업 완료 |
| Failed | 실패 상태 |
Kubelet은 Pod 상태를 지속적으로 확인하고 문제가 발생하면 조치를 수행합니다.
Kubernetes Kubelet Health Check 관리
Kubelet은 Container 상태를 확인하기 위해 Probe 기능을 활용합니다.
주요 Probe:
| Probe | 역할 |
|---|---|
| Liveness Probe | Container 정상 실행 확인 |
| Readiness Probe | Traffic 처리 가능 여부 확인 |
| Startup Probe | 초기 실행 상태 확인 |
Health Check를 통해 장애 상황에서 자동 복구가 가능합니다.
Kubernetes Kubelet Node 상태 보고
Kubelet은 주기적으로 Node 상태 정보를 API Server에 전달합니다.
보고 정보:
| 정보 | 내용 |
|---|---|
| CPU | 사용량 정보 |
| Memory | 사용 상태 |
| Disk | Storage 상태 |
| Network | 통신 상태 |
| Pod 상태 | 실행 정보 |
Node Controller는 이 정보를 기반으로 Node 상태를 판단합니다.
Kubernetes Kubelet과 Static Pod
Kubelet은 API Server 없이도 Static Pod를 실행할 수 있습니다.
Static Pod는 Kubelet이 직접 관리하는 Pod입니다.
활용 사례:
| 대상 | 용도 |
|---|---|
| API Server | Control Plane 구성 |
| Scheduler | Control Plane Component |
| Controller Manager | Control Plane Component |
Kubernetes 초기 구성에서도 Static Pod 방식이 많이 사용됩니다.
Kubernetes Kubelet Resource 관리
Kubelet은 Node Resource를 관리합니다.
관리 대상:
| Resource | 역할 |
|---|---|
| CPU | Processor 할당 |
| Memory | 메모리 제한 |
| Volume | Storage 연결 |
| Device | Hardware 관리 |
Resource Request와 Limit 설정을 기반으로 Container 실행을 조절합니다.
Kubernetes Kubelet Garbage Collection
Kubelet은 불필요한 Container와 Image를 정리하는 기능을 제공합니다.
관리 대상:
| 항목 | 설명 |
|---|---|
| Stopped Container | 종료된 Container 삭제 |
| Unused Image | 사용하지 않는 Image 정리 |
| Disk 사용량 | Node 공간 관리 |
이를 통해 Node Storage 부족 문제를 예방합니다.
Kubernetes Kubelet 보안 관리
Kubelet은 Node에서 중요한 권한을 가지기 때문에 보안 관리가 필요합니다.
주요 설정:
| 항목 | 설명 |
|---|---|
| TLS 인증 | 통신 보호 |
| Authentication | 접근 확인 |
| Authorization | 권한 관리 |
| Port 제한 | 외부 접근 차단 |
안전한 Kubelet 설정은 Worker Node 보안의 핵심입니다.
Kubernetes Kubelet 장애 영향
Kubelet에 문제가 발생하면 해당 Node의 Pod 관리에 영향을 줍니다.
영향:
| 상황 | 결과 |
|---|---|
| Kubelet 중단 | 새 Pod 실행 불가 |
| 상태 보고 실패 | Node 장애 판단 가능 |
| Container 관리 실패 | 서비스 영향 가능 |
기존 Container는 상황에 따라 계속 실행될 수 있지만 관리 기능은 제한됩니다.
Kubernetes Kubelet 운영 시 고려사항
Production 환경에서는 Kubelet 관리가 중요합니다.
| 항목 | 설명 |
|---|---|
| Version 관리 | Kubernetes 호환성 유지 |
| Monitoring | Node 상태 확인 |
| Log 관리 | 장애 분석 |
| Security | 접근 제한 |
Kubelet은 모든 Worker Node에서 안정적으로 동작해야 합니다.
Kubernetes Kubelet 장점
| 장점 | 설명 |
|---|---|
| Container 관리 | Pod 실행 자동화 |
| 상태 유지 | Desired State 유지 |
| Node 연결 | Control Plane 통신 |
| 장애 대응 | Health Check 지원 |
Kubelet은 Kubernetes Worker Node 운영의 핵심 Component입니다.
자주 묻는 질문
Kubelet과 Container Runtime의 차이는 무엇인가요?
Kubelet은 Container 실행을 관리하는 Agent이고 Container Runtime은 실제 Container를 생성하고 실행하는 역할을 담당합니다.
Kubelet이 중단되면 Container도 종료되나요?
항상 즉시 종료되지는 않습니다.
하지만 Kubernetes 관리와 상태 보고 기능은 정상적으로 동작하지 않습니다.
Kubelet은 모든 Node에 설치되나요?
네.
Kubernetes Cluster에서 Container를 실행하는 모든 Worker Node에는 Kubelet이 실행됩니다.
마무리
Kubernetes Kubelet은 Worker Node에서 Pod와 Container 실행을 담당하는 핵심 Node Agent입니다.
| 구성 요소 | 역할 |
|---|---|
| Kubelet | Pod 실행 및 상태 관리 |
| API Server | 명령 전달 |
| Container Runtime | Container 실행 |
| cAdvisor | Resource 정보 수집 |
Kubelet 구조를 이해하면 Kubernetes가 Control Plane의 명령을 실제 Node 환경에서 어떻게 실행하고 관리하는지 이해할 수 있습니다.
다음 글에서는 Kubernetes Network 통신과 Service 연결 구조를 담당하는 Kubernetes kube-proxy 완벽 가이드! Service Network와 Traffic Routing 구조 이해하기를 알아보겠습니다.