앞서 K8S 를 구축하면 아래와 같은 K8S 컴포넌트들을 확인할 수 있다. 

 

1. K8S 컴포넌트 

Pod 명칭 (핵심 키워드) 설명
calico-apiserver Calico 네트워크 정책 전용 API 확장 서비스
calico-kube-controllers 네트워크 리소스 상태 감시 및 정책 관리 컨트롤러
calico-node 노드 간 통신 및 실제 라우팅을 수행하는 네트워크 엔진
calico-typha 노드 확장 시 DB 부하를 줄여주는 네트워크 최적화 도구
csi-node-driver 컨테이너와 가상 머신 저장소(디스크)를 연결하는 드라이버
coredns 클러스터 내 서비스 이름을 IP로 변환하는 DNS 서비스
etcd 모든 클러스터 상태 데이터가 저장되는 핵심 데이터베이스
kube-apiserver 모든 명령이 통과하는 쿠버네티스의 중앙 제어 관문
kube-controller-manager 노드 상태 및 복제본 수 등을 관리하는 클러스터 감시자
kube-proxy 트래픽을 컨테이너로 전달하기 위한 네트워크 규칙 관리
kube-scheduler 자원 상태에 따라 컨테이너를 최적의 노드에 배치
metrics-server CPU 및 메모리 사용량을 실시간 수집하는 성능 분석 도구
dashboard-metrics-scraper 웹 대시보드 표시용 통계 데이터를 수집하는 도구
kubernetes-dashboard 웹 브라우저에서 클러스터를 관리하게 해주는 GUI UI
tigera-operator Calico 네트워크 엔진의 설치와 관리를 자동화하는 관리자

 

 

2. K8S 인터페이스 규격

- K8S 인터페이스 규격이란 : 쿠버네티스가 다양한 외부 기술(컨테이너 실행, 네트워크, 저장소)을 마치 '레고 블록'처럼 자유롭게 갈아 끼울 수 있도록 만든 표준 연결 고리

 

- CRI : 컨테이너 실행(런타임) 인터페이스
- CNI : 네트워크 연결(통신) 인터페이스
- CSI : '외부 저장소 연결(스토리지)'을 위한 표준 규격

* CRI & CNI : Kubelet이 CRI를 통해 컨테이너를 생성하면, 이어서 CNI가 해당 컨테이너의 네트워크 환경(IP 등)을 설정함. 1.24 버전 이후부터는 Kubelet이 직접 CNI를 부르는 대신 CRI가 CNI를 호출하는 구조로 최적화 됨

* CSI :
> 독립성: 쿠버네티스 코드를 수정하지 않고도 새로운 스토리지 드라이버를 추가할 수 있음
> 자동화: 사용자가 PVC(Persistent Volume Claim)를 요청하면, CSI가 자동으로 실제 스토리지를 생성하고 파드에 연결(Mount)해 줌
> 다양성: 클라우드 디스크뿐만 아니라 온프레미스의 하드웨어 스토리지도 플러그인 형태로 연결 가능

 

# CRI / CNI / CSI 핵심 비교 

구분 CRI (Runtime) CNI (Network) CSI (Storage)
역할 컨테이너 실행/관리 IP 할당 및 통신 볼륨 연결 및 데이터 저장
비유 컴퓨터 본체 (연산) 랜선 (통신) 외장 하드 (저장)
실무 질문 "컨테이너를 띄워라" "통신이 되게 하라" "데이터를 저장하라"
대표 예시 Containerd, CRI-O Calico, Cilium AWS EBS, NFS, Rook/Ceph

 

+ Recent posts