728x90
반응형
Overview
Kubernetes 생태계에서 "컨테이너 xxx 인터페이스" 라는 용어는 일반적으로 Kubernetes 시스템 구성 요소가 컨테이너 런타임 및 스토리지 시스템과 같은 모듈식 구성 요소와 상호 작용하는 방식을 정의하는 표준화된 인터페이스 세트와 연관된다.
따라서 쿠버네티스 생태계에서 CRI, CSI, CNI와 같은 컨테이너 인터페이스의 등장과 표준화는 다양한 클라우드 및 인프라 공급자 간에 일관되고 상호 운용 가능한 환경을 제공해야 할 필요성에 대해서 알아본다.
Kubernetes 생태계 표준화
앞서 Oveivew에서 설명했던 것처럼 표준화가 필수적이었던 주요 이유에 대해서 알아본다.
인터페이스를 통해 Kubernetes는 사내, 퍼블릭 클라우드 또는 하이브리드 설정 등 모든 인프라에서 작동할 수 있는 확장 가능하고 휴대 가능하며 확장 가능한 오케스트레이션 플랫폼이라는 핵심 원칙을 유지할 수 있다.
Decoupling Core Kubernetes from Specific Technologies(쿠버네티스 코어와 특정 기술의 분리)
- Flexibility(유연성): 인터페이스가 도입되기 전에 쿠버네티스는 특정 구현(컨테이너 런타임 및 특정 네트워킹 솔루션용 도커)과 긴밀하게 결합되었다. 이러한 결합으로 인해 쿠버네티스를 다양한 환경에 적용하거나 새로운 기술을 통합하는 것이 어려웠다.
- Modularity(모듈성): 쿠버네티스는 명확한 인터페이스를 정의함으로써 런타임, 스토리지 및 네트워킹을 처리하는 실제 서비스에서 오케스트레이션 계층을 분리할 수 있었다. 이 분리를 통해 핵심 쿠버네티스 시스템에 영향을 주지 않고 구성 요소 간의 업데이트, 유지 관리 및 스왑을 더 쉽게 할 수 있다.
Facilitating Innovation and Inclusion of New Technologies(혁신 및 신기술 도입)
- Vendor Neutrality(벤더 중립성): 표 준 인터페이스를 사용하면 정의된 API 사양을 준수하는 한 모든 벤더가 쿠버네티스에서 플러그인을 개발하거나 기술을 지원할 수 있다. 이로 인해 쿠버네티스 코어 개발 팀의 명시적이고 맞춤형 지원이 필요하지 않은 지원 기술이 확산되었다.
- Innovation(혁신): 표준 인터페이스를 통해 컨테이너, 스토리지 및 네트워킹 분야의 새롭고 새로운 기술을 훨씬 더 빠르게 쿠버네티스에 통합할 수 있다. 이는 이러한 기술의 빠른 진화와 채택을 지원한다.
Simplifying Cluster Operations and Management(클러스터 운영 및 관리 단순화)
- Interoperability(상호 운용성): 표준 인터페이스는 서로 다른 공급업체가 개발한 구성 요소가 원활하게 함께 작동할 수 있도록 보장한다. 운영자는 성능, 비용 또는 기능 요구 사항에 따라 서로 다른 공급업체의 기술을 혼합하고 일치시킬 수 있다.
- Ease of Management(관리 용이성): 런타임 및 스토리지 시스템과 같은 구성 요소를 통합하는 표준화된 방식을 사용하면 운영 모델이 기본 기술에 관계없이 일관성 있게 유지되므로 클러스터 관리가 단순해진다.
Promoting a Robust Ecosystem(견고한 생태계 조성)
- Community Growth(커뮤니티 성장): 쿠버네티스는 새로운 공급업체와 솔루션의 진입 장벽을 낮춤으로써 풍부한 생태계를 조성한다. 강력한 생태계는 경쟁과 혁신을 촉진하고, 이는 다시 더 나은 제품과 서비스의 개발을 촉진한다.
- Collaboration(협업): 표준 인터페이스는 단일 공급업체 우선 순위가 아닌 공동의 노력에 의해 개선 및 기능이 주도되는 커뮤니티 협업의 기반을 만든다.
Ensuring Future-Proofing and Scalability(미래 보장 및 확장성 보장)
- Adaptability(적응성): 클라우드 네이티브 기술이 발전함에 따라 쿠버네티스는 최신 발전을 지원함으로써 관련성을 유지해야 한다. 표준 인터페이스는 전체 시스템을 정비하지 않고도 미래 기술을 쉽게 통합할 수 있도록 해준다.
- Scalability(확장성): 표준화된 프로토콜과 API는 Kubernetes가 수많은 노드와 다양한 환경에서 확장할 때 성능과 기능의 일관성을 보장한다.
Container xxx Interface (컨테이너 xxx 인터페이스)
CNI(컨테이너 네트워크 인터페이스)로 알려진 또 다른 중요한 인터페이스를 포함하여 이들 각각을 분석해 보겠다.
CRI(컨테이너 런타임 인터페이스)
- 목적: CRI는 Kubernetes와 통합하기 위한 컨테이너 런타임용 표준 API를 정의한다. 이를 통해 Kubernetes는 Docker, Containerd 및 CRI-O를 포함하여 재컴파일할 필요 없이 다양한 컨테이너 런타임을 사용할 수 있다.
- 기능: 인터페이스는 컨테이너 시작, 중지, 일시 중지와 같은 컨테이너의 수명 주기 작업을 지원한다. 또한 이미지 관리(이미지 가져오기, 푸시, 나열) 및 런타임 구성을 처리한다.
CSI(컨테이너 스토리지 인터페이스)
- 목적: CSI를 사용하면 스토리지 공급업체가 Kubernetes 핵심 코드를 수정하지 않고도 맞춤형 스토리지 플러그인을 생성할 수 있다. 이를 통해 Kubernetes에서 새로운 스토리지 시스템에 대한 지원을 더 쉽게 추가할 수 있다.
- 기능: CSI는 노드에서 볼륨 생성, 삭제, 마운트, 마운트 해제, 연결 또는 분리와 같은 볼륨 수명주기 관리를 위한 표준 API를 정의한다. 또한 스냅샷 관리를 지원하여 스냅샷 생성, 삭제, 복원이 가능하다.
CNI(컨테이너 네트워크 인터페이스)
- 목적: CNI는 Linux 컨테이너용 네트워크 인터페이스 구성을 위한 표준을 지정한다. Kubernetes에서 파드 네트워킹 및 네트워크 분리를 관리하는 데 사용된다.
- 기능: CNI 플러그인은 컨테이너의 네트워크 연결을 처리하고 각 컨테이너에 고유한 IP 주소가 있는지 확인한다. 플러그인은 방화벽이나 라우팅 규칙과 같은 추가 네트워킹 리소스를 관리할 수도 있다.
CDI(컨테이너 장치 인터페이스)
- 목적 : CDI는 GPU, TPU, FPGA와 같은 컨테이너 내의 다양한 하드웨어 장치를 사용할 수 있도록 하는 것을 목표로 하는 새로운 표준이다. 이는 특정 하드웨어 가속이 필요한 워크로드에 필수적이다.
- 기능 : CDI는 하드웨어 장치를 컨테이너에 연결하고, 장치 권한을 관리하고, 이러한 장치가 다중 테넌트 환경 내에서 적절하게 격리되고 보안되는지 확인하는 방법을 정의한다.
오픈 컨테이너 이니셔티브(OCI)
- 목적 : OCI는 컨테이너 런타임 및 이미지 형식에 대한 표준을 지정한다. 인터페이스 자체는 아니지만 다양한 컨테이너 기술에서 상호 운용성과 표준화를 보장하는 데 중요한 역할을 한다.
- 기능 : OCI 표준은 다양한 컨테이너 런타임과 이미지 형식 간의 호환성을 보장하여, 하나의 환경에서 구축된 컨테이너가 수정 없이 다른 환경에서 실행될 수 있도록 보장한다.
Reference
https://kubernetes.io/docs/concepts/architecture/cri/
https://kubernetes.io/blog/2019/01/15/container-storage-interface-ga/
https://community.veeam.com/blogs-and-podcasts-57/about-container-runtimes-in-2-minutes-5791
728x90
반응형
'Container Orchestration > Kubernetes' 카테고리의 다른 글
Helm Chart Template 문법 (0) | 2024.11.15 |
---|---|
Kubernetes Garbage Collection (0) | 2024.08.30 |
Kubernetes Pod를 안전하게 종료하는 방법(cordon, uncordon, drain, scale) (0) | 2024.07.09 |
Ingress Nginx란? (0) | 2024.07.04 |
Kubernetes Volumes 및 StorageClass: CSI 드라이버 사용 가이드 (0) | 2024.04.28 |