1.31. Submariner 엔드 투 엔드 테스트 실패 문제 해결
Submariner 엔드 투 엔드 테스트를 실행한 후 오류가 발생할 수 있습니다. 다음 섹션을 사용하여 이러한 엔드 투 엔드 테스트 실패 문제를 해결하는 데 도움이 됩니다.
1.31.1. 증상: 하위 계층 데이터 플레인 테스트가 실패했습니다.
엔드 투 엔드 데이터 플레인 테스트에 실패하면 Submariner 테스트에서 커넥터
Pod가 리스너
Pod에 연결할 수 있지만 나중에 커넥터
Pod가 수신 대기
단계에서 중단되는 것을 보여줍니다.
1.31.2. 문제 해결: Submariner end-to-end data plane test fails
MTU(최대 전송 단위)는 엔드 투 엔드 데이터 플레인 테스트 실패를 유발할 수 있습니다. 예를 들어 MTU로 인해 IPsec(Internet Protocol Security)을 통한 클러스터 간
트래픽이 실패할 수 있습니다. 작은 패킷 크기를 사용하는 엔드 투 엔드 데이터 플레인 테스트를 실행하여 MTU가 실패했는지 확인합니다.
이 유형의 테스트를 실행하려면 Submariner 작업 영역에서 다음 명령을 실행합니다.
subctl verify --verbose --only connectivity --context <from_context> --tocontext <to_context> --image-override submariner-nettest=quay.io/submariner/nettest:devel --packet-size 200
테스트에 이 작은 패킷 크기로 성공하면 TCP(전송 제어 프로토콜) 최대 세그먼트 크기(MSS)를 설정하여 연결 문제를 해결할 수 있습니다. 다음 단계를 완료하여 TCP MSS를 설정합니다.
게이트웨이 노드에 주석을 달아 TCP MSS
클
amping 값을 설정합니다. 예를 들어 값1200
을 사용하여 다음 명령을 실행합니다.oc annotate node <node_name> submariner.io/tcp-clamp-mss=1200
다음 명령을 실행하여 모든
RouteAgent
Pod를 다시 시작합니다.oc delete pod -n submariner-operator -l app=submariner-routeagent
1.31.3. 증상: 베어 메탈 클러스터에서 하위 계층 간 테스트가 실패했습니다.
컨테이너 네트워크 인터페이스(CNI)가 OpenShiftSDN인 경우 엔드 투 엔드 데이터 플레인 테스트가 없거나 클러스터 간 터널에 가상 확장 가능한 로컬 영역 네트워크(VXLAN)가 사용되는 경우 베어 메탈 클러스터에
실패할 수 있습니다.
1.31.4. 문제 해결: 베어 메탈 클러스터에서 하위 계층 간 테스트가 실패했습니다.
하드웨어에서 UDP(User Datagram Protocal) 체크섬 계산의 버그는 베어 메탈 클러스터의 엔드 투 엔드 데이터 플레인 테스트 실패의 근본 원인이 될 수 있습니다. 이 버그 문제를 해결하려면 다음 YAML 파일을 적용하여 하드웨어 오프로드를 비활성화합니다.
apiVersion: apps/v1 kind: DaemonSet metadata: name: disable-offload namespace: submariner-operator spec: selector: matchLabels: app: disable-offload template: metadata: labels: app: disable-offload spec: tolerations: - operator: Exists containers: - name: disable-offload image: nicolaka/netshoot imagePullPolicy: IfNotPresent securityContext: allowPrivilegeEscalation: true capabilities: add: - net_admin drop: - all privileged: true readOnlyRootFilesystem: false runAsNonRoot: false command: ["/bin/sh", "-c"] args: - ethtool --offload vxlan-tunnel rx off tx off; ethtool --offload vx-submariner rx off tx off; sleep infinity restartPolicy: Always securityContext: {} serviceAccount: submariner-routeagent serviceAccountName: submariner-routeagent hostNetwork: true