1.31. Submariner エンドツーエンドテスト失敗のトラブルシューティング
Submariner エンドツーエンドテストを実行すると、失敗する可能性があります。エンドツーエンドテストが失敗した場合のトラブルシューティングは、次のセクションを参照してください。
1.31.1. 現象: Submariner エンドツーエンドのデータプレーンテストが失敗する
エンドツーエンドのデータプレーンテストが失敗すると、Submariner テストでは connector
Pod が listener
Pod に接続できることが示された後、connector
Pod が listening
フェーズで停止します。
1.31.2. 問題の解決: Submariner エンドツーエンドのデータプレーンテストが失敗する
最大伝送単位 (MTU) が原因で、エンドツーエンドのデータプレーンテストが失敗する可能性があります。たとえば、MTU が Internet Protocol Security (IPsec) を経由する inter-cluster
トラフィックの障害を引き起こす可能性があります。小さなパケットサイズを使用してエンドツーエンドのデータプレーンテストを実行し、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
小さなパケットサイズでのテストが成功した場合は、Transmission Control Protocol (TCP) の最大セグメントサイズ (MSS) を設定することで接続の問題を解決できます。次の手順を実行して TCP MSS を設定します。
ゲートウェイノードにアノテーションを付けて TCP MSS
clamping
値を設定します。たとえば、値を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. 現象: ベアメタルクラスターの Submariner エンドツーエンドテストが失敗する
Container Network Interface (CNI) が OpenShiftSDN である場合、または inter-cluster
トンネルに Virtual Extensible Local Area Network (VXLAN) が使用されている場合、ベアメタルクラスターのエンドツーエンドデータプレーンテストが失敗する可能性があります。
1.31.4. 問題の解決: ベアメタルクラスターの Submariner エンドツーエンドテストが失敗する
ハードウェアによる User Datagram Protocal (UDP) チェックサム計算のバグが根本原因となり、ベアメタルクラスターのエンドツーエンドデータプレーンテストが失敗している可能性があります。このバグをトラブルシューティングするには、次の 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