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 클라이언트를 시작한 다음 서버에 연결할 수 있습니다.
두 번째 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를 사용하면 왜 작동하는지 아는 사람이 있나요?
감사해요!