컨테이너 네트워킹이란?
컨테이너 네트워킹은 가상 머신과 개념이 유사한 가정용 데스크톱 및 웹 규모의 엔터프라이즈 네트워킹 솔루션에 사용되는 새로운 애플리케이션 샌드박싱 메커니즘입니다. 호스트 및 기타 모든 컨테이너로부터 격리된 컨테이너 내부에는 자체 사용자, 파일 시스템, 프로세스 및 네트워크 스택이 있는 완벽한 기능의 Linux 환경이 있습니다. 컨테이너 내부의 모든 애플리케이션은 컨테이너 내부에서만 사용 가능한 파일 또는 리소스에 액세스하거나 이를 수정할 수 있습니다.
각각 자체 설치 및 종속성이 있는 여러 컨테이너를 동시에 실행할 수 있습니다. 이는 서버에서 실행되는 다른 애플리케이션 종속성과 충돌이 발생할 수 있는 최신 버전의 애플리케이션에서 종속성을 업그레이드해야 하는 경우에 특히 유용합니다. 가상 머신과 달리 컨테이너는 컴퓨터의 모든 하드웨어를 완전히 시뮬레이션하지 않고 호스트 리소스를 공유하므로 가상 머신보다 작고 빠르며 오버헤드가 줄어듭니다. 특히 웹 규모 애플리케이션의 맥락에서 컨테이너는 마이크로 서비스 아키텍처를 위한 배포 플랫폼으로서 가상 머신을 대체하도록 설계되었습니다.
또한 컨테이너에는 이동성의 특성이 있습니다. 예를 들어 컨테이너 엔진인 Docker는 개발자가 컨테이너와 모든 종속성을 함께 패키징할 수 있도록 합니다. 그러면 해당 컨테이너 패키지를 다운로드할 수 있습니다. 이 패키지를 다운로드하면 컨테이너를 호스트에서 즉시 실행할 수 있습니다.

VMware Container Networking with Antrea - 데이터 시트

Kubernetes용 VMware Container Networking with Antrea 발표
컨테이너 네트워킹의 작동 방식
컨테이너 네트워크는 개념적으로 가상 머신(VM)과 유사하지만 구별되는 차이점이 있는 가상화의 한 형태입니다. 기본적으로 컨테이너 방식은 하드웨어 가상화의 한 형태인 가상 머신과 달리 운영 체제 가상화의 한 형태입니다.
하이퍼바이저에서 실행되는 각 가상 머신에는 자체 운영 체제, 애플리케이션 및 라이브러리가 있습니다. 또한 영구 데이터를 캡슐화하고, 새 OS를 설치하고, 호스트와 다른 파일 시스템을 사용하고, 다른 커널 버전을 사용할 수 있습니다.
반면에 컨테이너는 이미지의 "실행 중인 인스턴스"이자 일부 작업을 수행하기 위해 가동된 후 삭제되고 잊히는 임시 운영 체제 가상화입니다. 컨테이너의 일시적인 특성으로 인해 시스템 사용자는 더 큰 주소 공간이 필요한 가상 머신에 비해 더 많은 컨테이너 인스턴스를 실행합니다.
격리를 생성하기 위해 컨테이너는 두 가지 Linux 커널 기능인 네임스페이스와 cgroup을 사용합니다. 컨테이너에 다른 리소스와 격리된 시스템 보기를 제공하기 위해 각 리소스에 대해 네임스페이스가 생성되며 나머지 시스템과 공유되지 않습니다. 그런 다음 제어 그룹(cgroup)을 사용하여 CPU, 메모리, 디스크 I/O, 네트워크 등과 같은 시스템 리소스를 모니터링하고 제한합니다.
컨테이너 네트워킹의 이점
컨테이너는 마이크로 서비스를 위한 플랫폼으로 가상 머신을 대체하면서 빠르게 채택되고 있습니다.
컨테이너에는 다음과 같은 여러 주요 이점이 있습니다.
- 기존 워크로드와 함께 컨테이너화된 애플리케이션 실행: 머신은 동일한 인프라에서 기존 가상 머신과 함께 컨테이너화된 애플리케이션을 실행할 수 있으므로 유연성과 속도가 향상됩니다.
- 보안, 가시성 및 관리 기능에 이동성 통합: 컨테이너에 내재된 설계로 인해 샌드박싱을 통한 보안 강화, 호스트의 리소스 투명성, 작업 관리 및 실행 환경의 이동성을 실현할 수 있습니다.
- 손쉬운 기존 인프라 활용 및 확장: 기존 SDDC를 사용하면 비용과 시간이 많이 소모될 뿐만 아니라 서로 다른 부서가 동일한 조직 내에서 자체 IT 인프라를 유지 관리할 때 사일로가 발생하는 인프라 재구축을 방지할 수 있습니다. 이러한 "사일로 효과"는 각 부서의 기술 구성 차이로 인해 조직 전반에 IT 정책 및 업그레이드를 배포할 때 문제를 야기합니다. 사일로를 재통합하는 일은 비용과 시간이 많이 소요되는 프로세스이며, 이는 컨테이너 네트워킹을 통해 방지할 수 있습니다.
- Docker와 호환되는 인터페이스를 개발자에게 제공: Docker에 이미 익숙한 개발자는 Docker 호환 인터페이스를 통해 컨테이너에서 애플리케이션을 개발한 다음 셀프 서비스 관리 포털 또는 UI를 통해 프로비저닝할 수 있습니다.
웹 규모 애플리케이션 배포에서 컨테이너 네트워킹 사용
컨테이너는 엔터프라이즈 환경에서 마이크로 서비스 아키텍처의 일부로 배포되어 대규모 웹 애플리케이션에서 일반적인 개별 작업을 캡슐화하는 데 도움이 됩니다. 각 작업에는 자체 컨테이너가 있을 수 있으며, API 및 GUI와 같은 외부에 노출된 컨테이너는 퍼블릭 인터넷에 개방되어 있고 나머지는 프라이빗 네트워크에 상주합니다.
마이크로 서비스 모델은 다음과 같은 이점을 제공합니다.
- 간편한 배포: 호스트 구성을 컨테이너에 내장할 수 있어 배포 후 바로 사용 가능합니다.
- 폐기 가능: 컨테이너는 빠르게 시작하고 폐기할 수 있도록 설계되었습니다. 호스트에 장애가 발생할 경우, 예비 서버를 추가하는 것만큼 간단하게 애플리케이션을 다시 온라인으로 전환할 수 있습니다.
- 무장애 기능: 컨테이너는 데이터베이스 및 웹 서버에 대한 간편한 이중화를 생성합니다. 동일한 컨테이너를 여러 노드에 복사하면 고가용성과 무장애 기능이 제공됩니다.
컨테이너 네트워킹 유형
오늘날 사용되는 컨테이너 네트워킹에는 다섯 가지 유형이 있습니다. 이러한 유형은 컨테이너별 IP 모델과 포드별 IP 모델, 그리고 NAT(네트워크 주소 변환) 요구 사항과 변환 필요 없음 등의 특징을 중심으로 합니다.
- 없음: 컨테이너는 네트워크 스택을 수신하지만 외부 연결이 없습니다. 이 모드는 컨테이너를 테스트하고, 향후 네트워크 연결을 위해 컨테이너를 스테이징하고, 외부 통신이 필요하지 않은 컨테이너에 할당하는 데 유용합니다.
- 브리지: 내부 호스트 네트워크에서 브리징되며 동일한 호스트의 다른 컨테이너와 통신할 수 있는 컨테이너입니다. 호스트 외부에서 컨테이너에 액세스할 수 없습니다. 브리지 네트워크는 Docker 컨테이너의 기본값입니다.
- 호스트: 이 구성을 사용하면 생성된 컨테이너가 호스트의 네트워크 네임스페이스를 공유하여 컨테이너에 호스트의 모든 네트워크 인터페이스에 대한 액세스 권한을 부여할 수 있습니다. 외부 네트워킹 구성 중 가장 덜 복잡한 이 유형은 네트워킹 인터페이스의 사용 공유로 인해 포트 충돌이 발생하기 쉽습니다.
- 언더레이: 언더레이는 호스트에서 실행되는 컨테이너에 대한 호스트 인터페이스를 직접 열어주며 포트 매핑이 필요하지 않으므로 브리지보다 더 효율적입니다.
- 오버레이: 오버레이는 네트워킹 터널을 사용하여 호스트 간에 통신하므로 컨테이너가 서로 다른 호스트에서 호스팅될 때도 동일한 머신에 있는 것처럼 작동할 수 있습니다.
관련 솔루션 및 제품
Antrea
Project Antrea에 대한 완전한 기업 지원이 제공되는 서명된 이미지 및 바이너리
컨테이너 및 Kubernetes 연결
컨테이너화된 애플리케이션과 마이크로 서비스를 연결하고 보호하십시오.
Virtual Cloud Network
Virtual Cloud Network를 통해 데이터 센터에서 퍼블릭 클라우드 환경을 구현하십시오.