Kubernetes サービス URL を使用してディスプレイを開くことはできません。

Kubernetes サービス URL を使用してディスプレイを開くことはできません。

k8sクラスタでグラフィカルアプリケーションを起動しています。私の設定は次のとおりです。

最初のポッドでは、XサーバーとVNCサーバーを実行します。

spec:
  containers:
    - name: test-x-server
      image: <basic_centos_image>
      ports:
        - name: vnc-display
          hostPort: 5901
          containerPort: 5901
          protocol: TCP
        - name: x11-socket
          hostPort: 6001
          containerPort: 6001
          protocol: TCP

そして次のサービス:

spec:
  ports:
    - name: vnc-display
      protocol: TCP
      port: 5901
      targetPort: 5901
    - name: x11-socket
      protocol: TCP
      port: 6001
      targetPort: 6001

最初のPodにログインし、次を実行します。

Xvfb :1 -listen tcp &
x0vncserver -passwordfile /root/.vnc/passwd -display :1 -rfbport 5901 &
xhost +

私のローカルコンピュータからポート6001を転送し、VNCクライアントを起動してサーバーに接続できます。

2番目のPodでは、次のコマンドを実行します。

export DISPLAY=@IP_SERVICE:1
glxgears

VNCクライアントを介してローカルにディスプレイを表示できます。

ただし、クラスタ内でサービスのURLを使用する場合:

export DISPLAY=SERVICE_NAME.NAMESPACE:1
glxgears

その後、次のエラーが発生します。

Error: couldn't open display SERVICE_NAME.NAMESPACE:1

正確に言うと、「プライマリ」ポッドでは、このクラスタでDNS変換が正しく機能します(たとえば、デフォルトのHTTPリクエストの場合など)。 2つのPod間にDISPLAYをエクスポートする場合に、このエラーが発生します。

URLの代わりにサービスの@IPを使用すると、なぜ機能するのかを知っている人はいますか?

ありがとうございます!

ベストアンサー1

おすすめ記事