kubelet / kubectl / kube-proxy / kubeadm
1. kubelet
Kubernetes Worker Node 위에서 동작하는 핵심 Agent 이다. Node 에 할당된 Pod를 생성, 시작 및 모니터링하고 컨테이너 Runtime과 통신해 Pod를 실제로 실행한다.
주요 기능
- Pod lifecycle
관리 ,스케줄러로부터 특정 Node에서 Pod를 실행하라는 명령을 받으면 Pod를 생성하고 상태를 보고한다.
- Health Check ( Probe)
liveness/readinessProbe가 설정된 경우 pod가 살아있는 지를 체크한다. (kill / restart 필요여부)
- Container runtime 과 연동
Docker 나 Containered, CRI-O 등 다양한 Runtime 과 CRI(Contaimer Runtime Interface)를 통해 소통한다.
모든 Worker Node 에는 kubelet이 있어야하며 Control Plane Node (Master Node)도 Pod를 실행할 수 있도록 설정된 경우 kubelet이 동작한다
2. kubbectl
Kubernetes Cluster 를 관리 및 조작하기위 한 CLI Tool 이다.
- kubectl get pods: 파드 목록 조회
- kubectl describe node <node-name>: 특정 노드 상세 정보
- kubectl logs <pod-name>: 파드 로그 확인
- kubectl exec -it <pod-name> -- /bin/sh: 파드 내부 쉘 접속
와 같이 kubectl 명령으로 cluster 와 Resource 에 대한 명령을 내릴 수 있다.
kubectl 은 Kubernetes API server 와 통신해 작업을 수행한다
인증 및 권한을 거쳐야 정상적인 조작이 가능하다 ( kubeconfig, RBAC)
3. kube-proxy
Kubernetes의 Service 기능 ( 로드 밸렁싱 및 네트워크 프록시)를 지원하기 위해 Node Level 에서 동작하는 Network Proxy 와 Routing Component 이다.
Service Discovery & Load Balancing 역할을 하며 각 역할을 하며, 각 노드에 설치된 iptables/ipvs 규칙 등을 조작하며 Service IP로 들어오는 트래픽을 실제 Pod 로 Routing 한다.
Pod가 죽거나 새로 생성되어 IP 가 바뀌어도 kube - proxy 가 Kubernetes API 로부터 업데이트를 받아 Network Role 을 갱신하기 때문에 항상 유효한 파드들로 트래픽이 전달된다.
모든 Worker Node 에서 동작하며 Local Node에서 발생하는 트래픽을 처리한다.
4. kubeadm
Kubernetes Cluster 를 손쉽게 설치 및 부트스트랩하기 위한 공식 도구이다. Node 간 인증서 생성, Control Plane Componenet 설치, Cluster Token 생성 등 복잡한 초기 설정을 자동화시켜준다.
주요 기능
- Cluster 초기화 (kubeadm init)
Control Plane 설치, etcd 설정, 인증서 생성, 네트워킹 구성 등
- Node Join (kubeadm join)
Worker Node 가 Cluster 에 참여할 때 필요한 명령 및 인증 절차를 간편화해준다.
- Cluster Upgrade (kubeadm upgrade)
Kubernetes Version을 최신 버전으로 올리는 데에도 사용된다.
On premises 환경 또는 VM 에서는 kubeadm 을 통해 빠르게 kubernetes 를 설치할 수 있다. 하지만 완전 관리형 Kubernetes인 AWS EKS, GCP GKE, Azure AKS 등에서는 kubeadm 이 아니라 클라우드 벤더의 관리 기능을 사용한다.