| 네트워크 드라이버 | -설명 | -컨테이너 패킷 수정 | -네트워크 플러그인 | -네트워크 플러그인 특성 | -
|---|---|---|---|---|
| L2bridge | -컨테이너는 외부 vSwitch에 연결된다. 컨테이너는 - 언더레이 네트워크에 연결된다. 하지만 인그레스/이그레스시에 재작성되기 - 때문에 물리적 네트워크가 컨테이너 MAC을 학습할 필요가 없다. - | -- MAC은 호스트 MAC에 다시 쓰여지고, IP는 HNS OutboundNAT 정책을 사용하여 - 호스트 IP에 다시 쓰여질 수 있다. - | -- win-bridge, - Azure-CNI, - Flannel 호스트 게이트웨이는 win-bridge를 사용한다. - | -- win-bridge는 L2bridge 네트워크 모드를 사용하고, - 컨테이너를 호스트의 언더레이에 연결하여 최상의 성능을 제공한다. - 노드 간 연결을 위해 사용자 정의 경로(user-defined routes, UDR)가 필요하다. - | -
| L2Tunnel | -- 이것은 l2bridge의 특별한 케이스이지만 Azure에서만 사용된다. 모든 패킷은 - SDN 정책이 적용되는 가상화 호스트로 전송된다. - | -- MAC 재작성되고, 언더레이 네트워크 상에서 IP가 보인다. - | -- Azure-CNI - | -- Azure-CNI를 사용하면 컨테이너를 Azure vNET과 통합할 수 있으며, - Azure Virtual Network에서 - 제공하는 기능 집합을 활용할 수 있다. - 예를 들어, Azure 서비스에 안전하게 연결하거나 Azure NSG를 사용한다. - azure-cni - 예제를 참고한다. - | -
| 오버레이(쿠버네티스에서 윈도우용 오버레이 네트워킹은 알파 단계에 있음) | -- 컨테이너에는 외부 vSwitch에 연결된 vNIC이 제공된다. 각 오버레이 - 네트워크는 사용자 지정 IP 접두사로 정의된 자체 IP 서브넷을 가져온다. 오버레이 - 네트워크 드라이버는 VXLAN 캡슐화를 사용한다. - | -- 외부 헤더로 캡슐화된다. - | -- Win-overlay, - Flannel VXLAN (win-overlay 사용) - | -- win-overlay는 가상 컨테이너 네트워크를 호스트의 - 언더레이에서 격리하려는 경우(예: 보안 상의 이유로) 사용해야 한다. 데이터 센터의 IP에 - 제한이 있는 경우, (다른 VNID 태그가 있는) 다른 오버레이 - 네트워크에 IP를 재사용할 수 있다. 이 옵션을 사용하려면 - 윈도우 서버 2019에서 KB4489899가 - 필요하다. - | -
| - Transparent(ovn-kubernetes의 특수한 유스케이스) - | -- 외부 vSwitch가 필요하다. 컨테이너는 논리적 네트워크(논리적 스위치 및 라우터)를 - 통해 파드 내 통신을 가능하게 하는 외부 vSwitch에 - 연결된다. - | -
- 패킷은
- GENEVE,
- STT 터널링을 통해
- 캡슐화되는데, 동일한 호스트에 있지 않은 파드에 도달하기 위한 터널링을 한다. 패킷은 ovn 네트워크 - 컨트롤러에서 제공하는 터널 메타데이터 정보를 통해 전달되거나 삭제된다. - - NAT는 north-south 통신(데이터 센터와 클라이언트, 네트워크 상의 데이터 센터 외부와의 통신)을 위해 수행된다. - |
- - ovn-kubernetes - | -- Ansible을 통해 배포한다. - 분산 ACL은 쿠버네티스 정책을 통해 적용할 수 있다. IPAM을 지원한다. - kube-proxy 없이 로드 밸런싱을 수행할 수 있다. NAT를 수행할 때 - iptables/netsh를 사용하지 않고 수행된다. - | -
| NAT (쿠버네티스에서 사용되지 않음) | -- 컨테이너에는 내부 vSwitch에 연결된 vNIC이 제공된다. DNS/DHCP는 - WinNAT라는 - 내부 컴포넌트를 사용하여 제공된다. - | -- MAC 및 IP는 호스트 MAC/IP에 다시 작성된다. - | -- nat - | -- 완전성을 위해 여기에 포함되었다. - | -
| 기능 | -설명 | -지원되는 쿠버네티스 버전 | -지원되는 윈도우 OS 빌드 | -활성화하는 방법 | -
|---|---|---|---|---|
| 세션 어피니티 | -- 특정 클라이언트의 연결이 매번 동일한 파드로 - 전달되도록 한다. - | -v1.20 이상 | -- 윈도우 서버 vNext Insider Preview Build 19551 (또는 그 이상) - | -
- service.spec.sessionAffinity를 "ClientIP"로 설정
- |
-
| 직접 서버 반환 (DSR) | -- IP 주소 수정 및 LBNAT가 컨테이너 vSwitch 포트에서 직접 - 발생하는 로드 밸런싱 모드. 서비스 트래픽은 소스 IP가 원래 파드 IP로 - 설정된 상태로 도착한다. - | -v1.20 이상 | -- 윈도우 서버 2019 - | -
- kube-proxy에서 다음 플래그를 설정한다.
- --feature-gates="WinDSR=true" --enable-dsr=true
- |
-
| 대상 보존(Preserve-Destination) | -- 서비스 트래픽의 DNAT를 스킵하여, 백엔드 파드에 도달하는 패킷에서 대상 - 서비스의 가상 IP를 보존한다. 또한 노드-노드 전달을 비활성화한다. - | -v1.20 이상 | -윈도우 서버, 버전 1903 (또는 그 이상) | -
- 서비스 어노테이션에서 "preserve-destination": "true"를 설정하고
- kube-proxy에서 DSR을 활성화한다.
- |
-
| IPv4/IPv6 이중 스택 네트워킹 | -- 클러스터 내/외부 기본 IPv4-to-IPv4 통신과 함께 - IPv6-to-IPv6 통신 - | -v1.19 이상 | -윈도우 서버, 버전 2004 (또는 그 이상) | -- IPv4/IPv6 이중 스택을 참고한다. - | -
| 클라이언트 IP 보존 | -- 인그레스 트래픽의 소스 IP가 유지되도록 한다. 또한 - 노드-노드 전달을 비활성화한다. - | -v1.20 이상 | -윈도우 서버, 버전 2019 (또는 그 이상) | -
- service.spec.externalTrafficPolicy를 "Local"로 설정하고
- kube-proxy에서 DSR을 활성화한다.
- |
-