我正在努力在 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它会起作用?
谢谢!