100GbE 네트워크를 사용하는 Kubernetes의 성능이 매우 낮습니다.

100GbE 네트워크를 사용하는 Kubernetes의 성능이 매우 낮습니다.

우리는 mellanox 스위치를 통해 서로 연결된 서버에서 ConnectX-5 100GbE 이더넷 카드를 사용하고 있습니다. 그리고 우리는 Kubernetes 클러스터에서 weavenet cni 플러그인을 사용하고 있습니다. 우리가 다음을 사용하여 몇 가지 테스트를 할 때아이퍼프다음 명령을 사용하여 도구를 사용하면 호스트에서 100Gbps 연결 속도를 얻을 수 있습니다.

# server host
host1 $ iperf -s -P8
# client host
host2 $ iperf -c <host_ip> -P8
Result: 98.8 Gbps transfer speed

또한 동일한 호스트에 있는 두 개의 도커 컨테이너를 사용하여 동일한 도구와 명령으로 일부 테스트를 수행할 때에도 동일한 결과를 얻습니다.

# server host
host1$ docker run -it -p 5001:5001 ubuntu:latest-with-iperf iperf -s -P8 
# client host
host2 $ docker run -it -p 5001:5001 ubuntu:latest-with-iperf iperf -c <host_ip> -P8
Result: 98.8 Gbps transfer speed

그러나 동일한 이미지를 사용하여 동일한 호스트(host1,host2)에 두 개의 서로 다른 배포를 생성하고 서비스 IP를 통해 동일한 테스트를 수행하면(다음 yaml을 사용하여 k8s 서비스를 생성했습니다) 트래픽을 서버 포드로 리디렉션합니다. 유일한2Gbps. 또한 포드의 클러스터 IP와 서비스의 클러스터 도메인을 사용하여 동일한 테스트를 수행하지만 결과는 동일합니다.

kubectl create deployment iperf-server --image=ubuntu:latest-with-iperf  # after that we add affinity(host1) and container port sections to the yaml
kubectl create deployment iperf-client --image=ubuntu:latest-with-iperf  # after that we add affinity(host2) and container port sections to the yaml
kind: Service
apiVersion: v1
metadata:
  name: iperf-server
  namespace: default
spec:
  ports:
    - name: iperf
      protocol: TCP
      port: 5001
      targetPort: 5001
  selector:
    name: iperf-server
  clusterIP: 10.104.10.230
  type: ClusterIP
  sessionAffinity: None

TLDR; 우리가 테스트한 시나리오는 다음과 같습니다.

  • host1(ubuntu 20.04, mellanox 드라이버 설치) <---------> host2(ubuntu 20.04, mellanox 드라이버 설치) = 98.8 Gbps
  • 컨테이너1-온-호스트1 <---------> 컨테이너2-온-호스트2 = 98.8Gbps
  • Pod1-on-host1 <-------> Pod2-on-host2(클러스터 IP 사용) = 2Gbps
  • Pod1-on-host1 <-------> Pod2-on-host2(서비스 클러스터 IP 사용) = 2Gbps
  • Pod1-on-host1 <-------> Pod2-on-host2(서비스 클러스터 도메인 사용) = 2Gbps

Pod 간 통신에서는 100Gbps 속도를 확보해야 합니다. 그렇다면 이 문제의 원인은 무엇일까요?

업데이트 1:

  • iperf 테스트 중에 포드 내부의 htop을 확인하면 112개의 CPU 코어가 있고 그 중 CPU 문제로 어려움을 겪는 사람은 없습니다.
  • hostNetwork: true배포 포드에 키를 추가하면 대역폭이 최대 100Gbps에 도달할 수 있습니다.

답변1

weavenet에서 암호화를 비활성화하여 이를 파악합니다. 그러나 서버를 재부팅하면 문제가 해결되었습니다. 감사합니다기사.

관련 정보