8.2. 가상 머신을 기본 Pod 네트워크에 연결
masquerade
바인딩 모드를 사용하도록 네트워크 인터페이스를 구성하여 가상 머신을 기본 내부 Pod 네트워크에 연결할 수 있습니다.
실시간 마이그레이션 중에 네트워크 인터페이스를 통해 기본 Pod 네트워크로 전달되는 트래픽이 중단됩니다.
8.2.1. 명령줄에서 가상 모드 구성
가상 모드를 사용하여 Pod IP 주소를 통해 나가는 가상 머신의 트래픽을 숨길 수 있습니다. 가상 모드에서는 NAT(Network Address Translation)를 사용하여 가상 머신을 Linux 브리지를 통해 Pod 네트워크 백엔드에 연결합니다.
가상 머신 구성 파일을 편집하여 가상 모드를 사용하도록 설정하고 트래픽이 가상 머신에 유입되도록 허용하십시오.
사전 요구 사항
- 가상 머신은 DHCP를 사용하여 IPv4 주소를 가져오도록 구성해야 합니다.
프로세스
가상 머신 구성 파일의
interfaces
스펙을 편집합니다.apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: example-vm spec: template: spec: domain: devices: interfaces: - name: default masquerade: {} 1 ports: 2 - port: 80 # ... networks: - name: default pod: {}
참고포트 49152 및 49153은 libvirt 플랫폼에서 사용하도록 예약되며 이러한 포트에 대한 기타 들어오는 트래픽은 모두 삭제됩니다.
가상 머신을 생성합니다.
$ oc create -f <vm-name>.yaml
8.2.2. 듀얼 스택(IPv4 및 IPv6)을 사용하여 가상 모드 구성
cloud-init를 사용하여 기본 pod 네트워크에서 IPv6 및 IPv4를 모두 사용하도록 새 VM(가상 머신)을 구성할 수 있습니다.
가상 머신 인스턴스 구성의 Network.pod.vmIPv6NetworkCIDR
필드에는 VM의 정적 IPv6 주소와 게이트웨이 IP 주소가 결정됩니다. 이는 virt-launcher Pod에서 IPv6 트래픽을 가상 머신으로 라우팅하는 데 사용되며 외부적으로 사용되지 않습니다. Network.pod.vmIPv6NetworkCIDR
필드는 CIDR(Classless Inter-Domain Routing) 표기법으로 IPv6 주소 블록을 지정합니다. 기본값은 fd10:0:2::2/120
입니다. 네트워크 요구 사항에 따라 이 값을 편집할 수 있습니다.
가상 시스템이 실행 중이면 가상 시스템의 들어오고 나가는 트래픽이 virt-launcher Pod의 IPv4 주소와 고유한 IPv6 주소로 라우팅됩니다. 그런 다음 virt-launcher Pod는 IPv4 트래픽을 가상 시스템의 DHCP 주소로 라우팅하고 IPv6 트래픽을 가상 시스템의 IPv6 주소로 정적으로 설정합니다.
사전 요구 사항
- OpenShift Container Platform 클러스터는 듀얼 스택용으로 구성된 OVN-Kubernetes CNI(Container Network Interface) 네트워크 플러그인을 사용해야 합니다.
프로세스
새 가상 시스템 구성에서
masquerade
가 있는 인터페이스를 포함하고 cloud-init를 사용하여 IPv6 주소 및 기본 게이트웨이를 구성합니다.apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: example-vm-ipv6 spec: template: spec: domain: devices: interfaces: - name: default masquerade: {} 1 ports: - port: 80 2 # ... networks: - name: default pod: {} volumes: - cloudInitNoCloud: networkData: | version: 2 ethernets: eth0: dhcp4: true addresses: [ fd10:0:2::2/120 ] 3 gateway6: fd10:0:2::1 4
네임스페이스에서 가상 머신을 생성합니다.
$ oc create -f example-vm-ipv6.yaml
검증
- IPv6가 구성되었는지 확인하려면 가상 시스템을 시작하고 가상 시스템 인스턴스의 인터페이스 상태를 확인하여 IPv6 주소가 있는지 확인합니다.
$ oc get vmi <vmi-name> -o jsonpath="{.status.interfaces[*].ipAddresses}"
8.2.3. 점보 프레임 지원 정보
OVN-Kubernetes CNI 플러그인을 사용하는 경우 기본 Pod 네트워크에 연결된 두 개의 VM(가상 머신) 간에 조각화되지 않은 점보 프레임 패킷을 보낼 수 있습니다. 점보 프레임에는 최대 전송 단위(MTU) 값이 1500바이트보다 큽니다.
VM은 다음 방법 중 하나로 클러스터 관리자가 설정한 클러스터 네트워크의 MTU 값을 자동으로 가져옵니다.
-
libvirt
: 게스트 OS에 에뮬레이션된 장치에서 PCI(Peripheral Component Interconnect) 구성 레지스터를 통해 들어오는 데이터를 해석할 수 있는 최신 버전의 VirtIO 드라이버가 있는 경우. - DHCP: 게스트 DHCP 클라이언트에서 DHCP 서버 응답에서 MTU 값을 읽을 수 있는 경우
VirtIO 드라이버가 없는 Windows VM의 경우 netsh
또는 유사한 도구를 사용하여 MTU를 수동으로 설정해야 합니다. Windows DHCP 클라이언트에서 MTU 값을 읽지 않기 때문입니다.