컨테이너에 대한 네트워킹 개념
컨테이너는 OS(공유 운영 체제) 커널에서 실행되는 격리된 소프트웨어 단위입니다. 컨테이너는 종속성을 사용하여 애플리케이션을 패키지하고 실행되는 호스트 OS에서 추상화합니다. 그 결과 개발 중에 애플리케이션을 실행하고 쉽게 공유할 수 있는 경량 런타임 환경이 생성됩니다.
컨테이너는 호스트 OS 및 다른 컨테이너에서 격리됩니다. 가상 스위치에 연결된 가상 네트워크 어댑터를 사용하면 컨테이너가 서로 통신하고 외부 네트워크와 통신할 수 있습니다.
컨테이너 런타임: Docker
이 모듈에서는 Windows의 Docker 컨테이너에 대한 네트워킹 옵션을 살펴봅니다. Docker는 Docker 컨테이너라는 표준화된 단위로 앱 코드를 패키징 또는 컨테이너화하기 위한 일반적인 모델을 제공하는 오픈 소스 도구, 솔루션 및 클라우드 기반 서비스의 컬렉션입니다. Docker 컨테이너는 서로 영향을 주지 않고 동일한 호스트에서 동시에 여러 컨테이너를 실행하기 위한 보안 기능을 제공합니다.
가상 스위치를 사용하여 컨테이너 격리
다양한 유형의 가상 스위치는 컨테이너에 대해 다양한 수준의 격리 및 성능을 제공합니다. 내부 가상 스위치는 컨테이너 호스트의 실제 NIC에 직접 연결되지 않고 외부 가상 스위치만 직접 연결됩니다.
가장 일반적인 가상 스위치 유형 중 세 가지는 NAT, 투명 및 오버레이입니다.
- NAT 가상 스위치가 있는 컨테이너는 NAT (네트워크 주소 변환)를 사용하여 외부 네트워크에 액세스합니다. NAT 가상 스위치는 쉽게 설정할 수 있지만 컨테이너의 이식성과 확장성을 제한합니다.
- 투명한 가상 스위치를 사용하면 컨테이너가 실제 네트워크에 직접 연결할 수 있습니다. 이 가상 스위치는 고성능 및 유연성을 제공하지만 IP 주소 및 라우팅 규칙을 수동으로 구성해야 합니다.
- 오버레이 가상 스위치는 실제 네트워크 위에 가상 네트워크 계층을 만듭니다. 컨테이너에 대한 호스트 간 통신 및 네트워크 분할을 얻을 수 있지만 오버헤드와 복잡성이 증가합니다.
컨테이너 관리
일반적으로 컨테이너는 VM으로 생각되지만 그렇지 않다는 것을 명심해야 합니다. 컨테이너에는 고유한 수명 주기가 있습니다. 요청에 따라 배포, 시작, 중지 및 제거됩니다. 이 수명 주기는 컨테이너를 삭제할 수 있게 하고 개발자와 IT 운영이 대규모 컨테이너 배포 관리를 계획하는 방식에 영향을 줍니다.
CNI(컨테이너 네트워크 인터페이스) 플러그 인
컨테이너에 대한 IP 주소 및 가상 네트워크 어댑터의 할당 및 구성을 관리하려면 CNI(컨테이너 네트워크 인터페이스) 플러그 인을 사용해야 합니다. CNI 플러그 인은 Kubernetes와 같은 오케스트레이터가 Azure와 같은 네트워크 공급자와 상호 작용하는 표준 방법을 정의하는 CNI 사양을 구현하는 소프트웨어 구성 요소입니다.
Windows 컨테이너에는 다음과 같은 다양한 CNI 플러그 인을 사용할 수 있습니다.
- WinNAT CNI 플러그 인은 컨테이너 네트워킹에 NAT 가상 스위치를 사용합니다. WinNAT는 Windows의 Docker에 대한 기본 CNI 플러그 인입니다.
- WinCNI 플러그 인은 컨테이너 네트워킹에 투명한 가상 스위치를 사용합니다. WinCNI는 Kubernetes와 호환되지만 수동 IP 주소 관리가 필요합니다.
- Azure CNI 플러그 인은 컨테이너 네트워킹에 오버레이 가상 스위치를 사용합니다. Azure CNI는 Azure Virtual Network와 통합되며 네트워크 정책, 서비스 검색 및 부하 분산과 같은 고급 기능을 제공합니다.
컨테이너 및 마이크로 서비스
마이크로 서비스 애플리케이션은 단일 앱이 느슨하게 결합되고 독립적으로 배포 가능한 여러 구성 요소 또는 서비스로 구성된 클라우드 네이티브 아키텍처 접근 방식입니다. 각 구성 요소 또는 서비스는 컨테이너로 나타낼 수 있습니다.
컨테이너가 반드시 마이크로 서비스 아키텍처를 구현하는 것은 아닙니다. 모놀리식 애플리케이션을 호스트할 수 있지만 해당 용도로 설계되지 않았습니다. 기본적으로 컨테이너 런타임(예: Docker) 및 컨테이너 오케스트레이터는 컨테이너를 항상 안전하게 삭제하거나 제거할 수 있으며 필요에 따라 다른 컨테이너를 대신할 수 있다고 가정합니다.
컨테이너, Kubernetes 및 네트워킹
컨테이너를 배포, 업데이트, 모니터링 및 제거하는 프로세스에서 많은 문제가 도입됩니다. 이 모듈에서는 Kubernetes 및 AKS(Azure Kubernetes Service)를 사용하여 Windows 컨테이너에 대한 네트워킹을 위한 컨테이너 관리 솔루션을 살펴봅니다. 이러한 옵션은 컨테이너 네트워킹에 CNI 플러그 인 사용을 지원합니다.