인프런 커뮤니티 질문&답변

졸린나뭇잎님의 프로필 이미지

작성한 질문수

대세는 쿠버네티스 [초급~중급]

Service - Headless, Endpoint, ExternalName

다른 네임스네이스로 pod 서비스 연결

작성

·

635

·

수정됨

2

kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
  name: test-ing-wan
  namespace: test-wan
spec:
  ingressClassName: user-ingress-class
  rules:
    - host: wan.test.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: test-svc-wan
                port:
                  number: 8080
-----------------------------------------------
kind: Service
apiVersion: v1
metadata:
  name: test-svc-wan
  namespace: test-wan
spec:
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 8080
  type: ExternalName
  sessionAffinity: None
  externalName: test-deploy-lan.test-lan.svc.cluster.local
  internalTrafficPolicy: Cluster
status:
  loadBalancer: {}
kind: Service
apiVersion: v1
metadata:
  name: test-deploy-lan
  namespace: test-lan
spec:
  ports:
    - name: http-port
      protocol: TCP
      port: 8080
      targetPort: 8080
      nodePort: 31141
  selector:
    app: test-deploy-lan
  clusterIP: 10.96.138.89
  clusterIPs:
    - 10.96.138.89
  type: NodePort
  sessionAffinity: None
  externalTrafficPolicy: Cluster
  ipFamilies:
    - IPv4
  ipFamilyPolicy: SingleStack
  internalTrafficPolicy: Cluster
status:
  loadBalancer: {}


외부망 네임스페이스(test-wan)의 인그레스를 타고 들어와서 내부망 네임스페이스(test-lan)의 서비스에 연결해주려고 하는데 위처럼 502 bad gateway가 뜨며 연결이 되지 않습니다.

내부망의 노드포트로 붙으면 서비스 페이지가 동작하는데 도메인으로 연결하면 연결이 되지 않습니다(hosts파일에 IP, 도메인 추가하였습니다)

무엇이 문제인지 확인 한번 부탁드립니다.

답변 2

1

일프로님의 프로필 이미지
일프로
지식공유자

안녕하세요.

먼저, ingress 에 test-deploy-lan을 바로 연결 안하고 test-svc-wan을 연결 했을까요?

그리고 nginx에 연결된 Service와 스펙과 hosts 에 설정한 내용도 캡쳐 바랍니다.

 

test-wan 네임스페이스의 ingress에서

test-wan 네임스테이스의 test-wan-svc svc에 연결 후 해당 svc의 ExternalName으로

test-lan 네임스페이스의 test-deploy-lan svc로 연결했습니다.

test-deploy-lan의 노드포트로 연결된 페이지는 아래와 같이 정상적인 테스트 페이지를 띄우고 있는데image

windows의 hosts 파일에 사진과 같이 도메인 추가 후 페이지에 접속하면 사진과 같이 오류가 뜨며 호출되지 못하고 있습니다.

image

image

 

그리고 nginx에 연결된 Service와 스펙은 어떤 부분을 말씀해주시는 걸까요?

웹 서비스가 떠있는 test-lan 네임스페이스의 test-dev-lan deployment를 보여드리면 될까요?

0

일프로님의 프로필 이미지
일프로
지식공유자

Nginx의 502 bad gateway를 화면을 보니 정상적으로 nginx에 트래픽은 간거 같은데

포트 없이 wan.test.com 만 입력한거 보니 192.168.60.194에 80 포트로 nginx에 연결되는 service를 올린거죠?

 

그리고, 굳이 ExternalName을 쓴 이유가 있는지?

그냥 아래와 같이 바로 lan Service에 연결되는 ingress를 만들면 되지는 않나요?

kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
  name: test-deploy-lan
  namespace: test-lan
spec:
  ingressClassName: user-ingress-class
  rules:
    - host: wan.test.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: test-deploy-lan
                port:
                  number: 8080

 

꼭 그래야 한다면 구간별로 좀더 테스트를 해보세요.

test-wan 네임스페이스에 일반 Service와 Pod를 하나 띄어놓고,

Ingress에 이 일반 Service 를 연결해 보시고요.

 

된다면

ingress에 ExternalName을 준 서비스를 연결하고, Exteranlname을 위 일반 Service를 연결해 보시고요.

 

이렇게 구간별로 테스트를 해봐서 정확히 어떤 구간이 문제인지 부터 확인이 되야할 것 같아요.