21장. 다중 네트워크
21.1. 다중 네트워크 이해하기
Kubernetes에서 컨테이너 네트워킹은 CNI(Container Network Interface)를 구현하는 네트워킹 플러그인에 위임됩니다.
OpenShift Container Platform은 Multus CNI 플러그인을 사용하여 CNI 플러그인 체인을 허용합니다. 클러스터 설치 중에 기본 pod 네트워크를 구성합니다. 기본 네트워크는 클러스터의 모든 일반 네트워크 트래픽을 처리합니다. 사용 가능한 CNI 플러그인을 기반으로 추가 네트워크를 정의하고 이러한 네트워크 중 하나 이상을 Pod에 연결할 수 있습니다. 필요에 따라 클러스터에 2개 이상의 추가 네트워크를 정의 할 수 있습니다. 따라서 스위칭 또는 라우팅과 같은 네트워크 기능을 제공하는 pod를 구성할 때 유연성이 제공됩니다.
21.1.1. 추가 네트워크 사용 시나리오
데이터 플레인 및 컨트롤 플레인 분리를 포함하여 네트워크 격리가 필요한 상황에서 추가 네트워크를 사용할 수 있습니다. 네트워크 트래픽 격리는 다음과 같은 성능 및 보안상의 이유로 유용합니다.
- 성능
- 각 플레인의 트래픽 수량을 관리하기 위해 두 개의 다른 플레인으로 트래픽을 보낼 수 있습니다.
- 보안
- 보안 고려 사항을 위해 특별히 관리되는 네트워크 플레인으로 중요한 트래픽을 보낼 수 있으며 테넌트 또는 고객 간에 공유되지 않아야 하는 개인 데이터를 분리할 수 있습니다.
클러스터의 모든 pod는 여전히 클러스터 전체의 기본 네트워크를 사용하여 클러스터 전체의 연결을 유지합니다. 모든 pod에는 클러스터 전체 pod 네트워크에 연결된 eth0
인터페이스가 있습니다. oc exec -it <pod_name> -- ip a
명령을 사용하여 pod의 인터페이스를 확인할 수 있습니다. Multus CNI를 사용하는 네트워크 인터페이스를 추가하는 경우 이름은 net1
, net2
, … , netN
입니다.
Pod에 추가 네트워크 인터페이스를 연결하려면 인터페이스 연결 방법을 정의하는 구성을 생성해야 합니다. NetworkAttachmentDefinition
CR(사용자 정의 리소스)을 사용하여 각 인터페이스를 지정합니다. 각 CR 내부의 CNI 구성은 해당 인터페이스의 생성 방법을 정의합니다.
21.1.2. OpenShift Container Platform의 그룹은 중첩되지 않습니다.
OpenShift Container Platform은 클러스터에서 추가 네트워크를 생성하기 위해 다음 CNI 플러그인을 제공합니다.
- bridge: 동일한 호스트의 pod가 서로 통신할 수 있도록브리지 기반 추가 네트워크를 구성합니다.
- host-device: pod가 호스트 시스템의 물리적 이더넷 네트워크 장치에 액세스할 수 있도록 호스트 장치 추가 네트워크를 구성합니다.
- ipvlan: macvlan기반 추가 네트워크와 유사하게 호스트의 pod가 해당 호스트의 다른 호스트 및 Pod와 통신할 수 있도록 ipvlan 기반 추가 네트워크를 구성합니다. macvlan 기반 추가 네트워크와 달리 각 pod는 상위 물리적 네트워크 인터페이스와 동일한 MAC 주소를 공유합니다.
- VLAN: VLAN기반 네트워크 격리 및 Pod 연결을 허용하도록 vlan 기반 추가 네트워크를 구성합니다.
- macvlan: 호스트의 pod가 물리적 네트워크 인터페이스를 사용하여 해당 호스트의 다른 호스트 및 Pod와 통신할 수 있도록 macvlan 기반 추가 네트워크를 구성합니다. macvlan 기반 추가 네트워크에 연결된 각 pod에는 고유 한 MAC 주소가 제공됩니다.
- 탭: 컨테이너 네임스페이스내에 탭 장치를 생성하도록 탭 기반 추가 네트워크를 구성합니다. 탭 장치를 사용하면 사용자 공간 프로그램이 네트워크 패킷을 전송하고 수신할 수 있습니다.
- SR-IOV: pod가 호스트 시스템의SR-IOV 가능 하드웨어에서 VF(가상 기능) 인터페이스에 연결할 수 있도록 SR-IOV 기반 추가 네트워크를 구성합니다.