24장. OVN-Kubernetes 네트워크 플러그인

24.1. OVN-Kubernetes 네트워크 플러그인 정보

OpenShift Container Platform 클러스터는 pod 및 service 네트워크에 가상화된 네트워크를 사용합니다.

Red Hat OpenShift Networking의 일부인 OVN-Kubernetes 네트워크 플러그인은 OpenShift Container Platform의 기본 네트워크 공급자입니다. OVN-Kubernetes는 OVN(Open Virtual Network)을 기반으로 하며 오버레이 기반 네트워킹 구현을 제공합니다. OVN-Kubernetes 플러그인을 사용하는 클러스터도 각 노드에서 OVS(Open vSwitch)를 실행합니다. OVN은 각 노드에서 선언된 네트워크 구성을 구현하도록 OVS를 구성합니다.

참고

OVN-Kubernetes는 OpenShift Container Platform 및 단일 노드 OpenShift 배포를 위한 기본 네트워킹 솔루션입니다.

OVS 프로젝트에서 발생한 OVN-Kubernetes는 오픈 흐름 규칙과 같은 여러 개의 동일한 구성을 사용하여 패킷이 네트워크를 통과하는 방식을 결정합니다. 자세한 내용은 Open Virtual Network 웹 사이트를 참조하십시오.

OVN-Kubernetes는 가상 네트워크 구성을 OpenFlow 규칙으로 변환하는 OVS의 일련의 데몬입니다. OpenFlow 는 네트워크 스위치 및 라우터와 통신하기 위한 프로토콜로, 네트워크 장치의 네트워크 트래픽 흐름을 원격으로 제어하는 수단을 제공하여 네트워크 관리자가 네트워크 트래픽 흐름을 구성, 관리 및 모니터링할 수 있습니다.

OVN-Kubernetes는 OpenFlow 에서 사용할 수 없는 고급 기능을 더 많이 제공합니다. OVN은 분산 가상 라우팅, 분산 논리 스위치, 액세스 제어, DHCP 및 DNS를 지원합니다. OVN은 오픈 흐름을 여는 것과 동일한 논리 흐름 내에서 분산 가상 라우팅을 구현합니다. 예를 들어 네트워크에 DHCP 요청을 보내는 Pod가 있는 경우 해당 패킷과 일치하는 논리 흐름 규칙이 있고 DNS 서버에 IP 주소를 제공하는 논리 흐름 규칙이 있어야 합니다.

OVN-Kubernetes는 각 노드에서 데몬을 실행합니다. 데이터베이스 및 모든 노드에서 실행되는 OVN 컨트롤러에 대한 데몬 세트가 있습니다. OVN 컨트롤러는 네트워크 공급자 기능, 송신 IP, 방화벽, 라우터, 하이브리드 네트워킹, IPSEC 암호화, IPv6 네트워크 정책, 네트워크 정책 로그, 하드웨어 오프로드 및 멀티 캐스트 등 노드에서 Open vSwitch 데몬을 프로그래밍합니다.

24.1.1. OVN-Kubernetes 목적

OVN-Kubnernetes 네트워크 플러그인은 OVN(Open Virtual Network)을 사용하여 네트워크 트래픽 흐름을 관리하는 오픈 소스 완전 기능을 갖춘 Kubernetes CNI 플러그인입니다. OVN은 커뮤니티에서 개발한 벤더와 무관한 네트워크 가상화 솔루션입니다. OVN-Kubnernetes 네트워크 플러그인:

  • OVN(Open Virtual Network)을 사용하여 네트워크 트래픽 흐름을 관리합니다. OVN은 커뮤니티에서 개발한 벤더와 무관한 네트워크 가상화 솔루션입니다.
  • 수신 및 송신 규칙을 포함한 Kubernetes 네트워크 정책 지원을 구현합니다.
  • VXLAN 대신 Geneve(Generic Network Virtualization Encapsulation) 프로토콜을 사용하여 노드 간에 오버레이 네트워크를 만듭니다.

OVN-Kubernetes 네트워크 플러그인은 OpenShift SDN에 비해 다음과 같은 이점을 제공합니다.

  • 지원되는 플랫폼에서 IPv6 단일 스택 및 IPv4/IPv6 듀얼 스택 네트워킹을 완전히 지원합니다.
  • Linux 및 Microsoft Windows 워크로드가 모두 있는 하이브리드 클러스터 지원
  • 클러스터 내부 통신의 선택적 IPsec 암호화
  • 호스트 CPU에서 호환되는 네트워크 카드 및 DPDK(데이터 처리 장치)에 대한 네트워크 데이터 처리 오프로드

24.1.2. 지원되는 네트워크 플러그인 기능 매트릭스

Red Hat OpenShift Networking은 네트워크 플러그인에 대해 네트워크 플러그인의 두 가지 옵션인 OpenShift SDN 및 OVN-Kubernetes를 제공합니다. 다음 표에는 두 네트워크 플러그인에 대한 현재 기능 지원이 요약되어 있습니다.

표 24.1. 기본 CNI 네트워크 플러그인 기능 비교

기능OVN-KubernetesOpenShift SDN

송신 IP

지원됨

지원됨

송신 방화벽 [1]

지원됨

지원됨

송신 라우터

지원 [2]

지원됨

하이브리드 네트워킹

지원됨

지원되지 않음

클러스터 내 통신에 대한 IPsec 암호화

지원됨

지원되지 않음

IPv6

지원 [3]

지원되지 않음

Kubernetes 네트워크 정책

지원됨

지원됨

Kubernetes 네트워크 정책 로그

지원됨

지원되지 않음

하드웨어 오프로드

지원됨

지원되지 않음

멀티 캐스트

지원됨

지원됨

  1. 송신 방화벽은 OpenShift SDN에서 송신 네트워크 정책이라고도 합니다. 이것은 네트워크 정책 송신과 동일하지 않습니다.
  2. OVN-Kubernetes용 송신 라우터는 리디렉션 모드만 지원합니다.
  3. IPv6는 베어 메탈, IBM Power 및 IBM zSystems 클러스터에서만 지원됩니다.

24.1.3. OVN-Kubernetes IPv6 및 듀얼 스택 제한 사항

OVN-Kubernetes 네트워크 플러그인에는 다음과 같은 제한 사항이 있습니다.

  • 듀얼 스택 네트워킹용으로 구성된 클러스터의 경우 IPv4 및 IPv6 트래픽 모두 기본 게이트웨이와 동일한 네트워크 인터페이스를 사용해야 합니다. 이 요구 사항이 충족되지 않으면 ovnkube-node 데몬 세트의 호스트의 Pod가 CrashLoopBackOff 상태가 됩니다. oc get pod -n openshift-ovn-kubernetes -l app=ovnkube-node -o yaml yaml과 같은 명령으로 Pod를 표시하는 경우 status 필드에는 다음 출력에 표시된 대로 기본 게이트웨이에 대한 두 개 이상의 메시지가 포함됩니다.

    I1006 16:09:50.985852   60651 helper_linux.go:73] Found default gateway interface br-ex 192.168.127.1
    I1006 16:09:50.985923   60651 helper_linux.go:73] Found default gateway interface ens4 fe80::5054:ff:febe:bcd4
    F1006 16:09:50.985939   60651 ovnkube.go:130] multiple gateway interfaces detected: br-ex ens4

    유일한 해결 방법은 두 IP 제품군이 기본 게이트웨이에 대해 동일한 네트워크 인터페이스를 사용하도록 호스트 네트워킹을 재구성하는 것입니다.

  • 듀얼 스택 네트워킹용으로 구성된 클러스터의 경우 IPv4 및 IPv6 라우팅 테이블에는 기본 게이트웨이가 포함되어야 합니다. 이 요구 사항이 충족되지 않으면 ovnkube-node 데몬 세트의 호스트의 Pod가 CrashLoopBackOff 상태가 됩니다. oc get pod -n openshift-ovn-kubernetes -l app=ovnkube-node -o yaml yaml과 같은 명령으로 Pod를 표시하는 경우 status 필드에는 다음 출력에 표시된 대로 기본 게이트웨이에 대한 두 개 이상의 메시지가 포함됩니다.

    I0512 19:07:17.589083  108432 helper_linux.go:74] Found default gateway interface br-ex 192.168.123.1
    F0512 19:07:17.589141  108432 ovnkube.go:133] failed to get default gateway interface

    유일한 해결 방법은 두 IP 제품군에 기본 게이트웨이를 포함하도록 호스트 네트워킹을 재구성하는 것입니다.

24.1.4. 세션 선호도

세션 선호도는 Kubernetes Service 오브젝트에 적용되는 기능입니다. <service_VIP>:<Port>에 연결할 때마다 트래픽이 항상 동일한 백엔드에 분산되도록 세션 선호도 를 사용할 수 있습니다. 클라이언트의 IP 주소를 기반으로 세션 선호도를 설정하는 방법을 포함한 자세한 내용은 세션 선호도 를 참조하십시오.

세션 선호도에 대한 고정 시간 제한

OpenShift Container Platform의 OVN-Kubernetes 네트워크 플러그인은 마지막 패킷을 기반으로 클라이언트에서 세션에 대한 고정 제한 시간을 계산합니다. 예를 들어, curl 명령을 10 번 실행하면 고정 세션 타이머가 첫 번째 패킷이 아닌 10번째 패킷에서 시작됩니다. 결과적으로 클라이언트가 서비스에 지속적으로 연결하는 경우 세션은 시간 초과되지 않습니다. 시간 초과는 서비스가 timeoutSeconds 매개변수에 의해 설정된 시간 동안 패킷을 수신하지 않은 경우 시작됩니다.