无法使用 Kubernetes 服务 URL 打开显示

无法使用 Kubernetes 服务 URL 打开显示

我正在努力在 k8s 集群上启动图形应用程序。我的配置如下:

在第一个 Pod 中,我运行 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 客户端并连接到该服务器。

在第二个 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

为了精确起见,在“基本”pod 中,DNS 转换在此集群中运行良好(例如,对于基本 HTTP 请求)。对于在 2 个 Pod 之间导出 DISPLAY 的特定情况,我收到此错误。

任何人都知道为什么如果我使用服务的@IP而不是它的URL它会起作用?

谢谢!

相关内容