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 클라이언트를 시작한 다음 서버에 연결할 수 있습니다.

두 번째 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를 사용하면 왜 작동하는지 아는 사람이 있나요?

감사해요!

관련 정보