존재하는 이유: k8s가 특정 구현체에 종속되지 않도록 만든 표준 인터페이스
- CSI (Container Storage Interface): 스토리지를 파드에 붙이는 표준 인터페이스
* EBS CSI Driver: CSI를 참고하여 구현한 AWS 전용 드라이버 -> EKS add on 에 추가 가능
PVC 생성
-> controller-manager
-> CSI Controller Plugin 호출(EBS 생성)
-> 파드 스케줄링
-> kubelet
-> CSI Node Plugin 호출
-> 파드에서 볼륨 사용
PV / PVC / StorageClass 관계
1. 어떤 개발자가 요청을 하면,
2. 어떤 타입의 스토리지인지 정의되어잇는 StorgeClass를 참고해서
3. 동적으로 PV 한다.
개발자 관리자/CSI
│ │
PVC 생성 → StorageClass 참조 → CSI가 PV(EBS) 동적 생성
│ │
└──────────── 바인딩 ────────────────┘
# PVC 생성 예시
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce # 단일 노드에서 읽기/쓰기
storageClassName: gp3 # 어떤 StorageClass 쓸지 지정
resources:
requests:
storage: 10Gi # 10GB 요청
--
CRD (Custom Resource Definition): k8s API를 확장해 커스텀 리소스를 정의
기본 리소스: Pod, Deployment, Service ...
+
CRD 정의 → 커스텀 리소스 추가
예: Application (ArgoCD), Rollout (Argo Rollouts)
NodeClaim (Karpenter), ExternalSecret (ESO)
CRD : 커스텀 리소스의 스키마 정의 (설계도)
CR : CRD로 만든 실제 오브젝트 (인스턴스)
Operator: CR을 감지해서 원하는 상태로 만드는 컨트롤러
Reconcile Loop: Operator의 핵심 동작
현재 상태와 원하는 상태를 계속 비교 -> 다르면 맞춤 -> 반복
-> k8s의 자가 치유의 핵심
--
CRI (Container Runtime Interface): 컨테이너를 어떻게 실행할 것인가?
kubelet이 containerd 한테 "이 컨테이너 실행해줘" -> CRI는 그 컨테이너의 규격이 된다.
실제로는 containerd, CRI-O 등이 구현체이다.
--
CNI (Container Network Interface): 파드에 IP/Network를 어떻게 붙일 것인가?
파드가 생성되면 kubelet이 CNI 플러그인한테 “이 파드에 IP 붙여줘” → CNI는 그 네트워크의 규격
AWS애서는 VPC CNI가 구현체 → ENI에서 IP를 뽑아서 파드에 직접 할당
'DevOps' 카테고리의 다른 글
| Karpenter + Spot 인스턴스 설계(끝) (0) | 2026.05.19 |
|---|---|
| Kubernetes Architecture (0) | 2026.05.16 |
| Karpenter + Spot 조합을 알아보자 (2) (0) | 2026.05.15 |
| Karpenter + Spot 조합을 알아보자 (1) (0) | 2026.05.13 |
| 노드에 파드 할당하기 (0) | 2026.05.13 |