IT TIP

kubernetes 서비스 정의에서 targetPort와 포트의 차이점

itqueen 2020. 11. 28. 13:23
반응형

kubernetes 서비스 정의에서 targetPort와 포트의 차이점


Kubernetes Service서비스 정의에 targetPortand port가질 수 있습니다 .

kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  selector:
    app: MyApp
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9376

port의 차이점은 무엇입니까 targetPort?


서비스 : 트래픽을 포드로 보냅니다.

TargetPort : 컨테이너 내에서 애플리케이션이 실행되는 실제 포트입니다.

포트 : 컨테이너 내부의 애플리케이션이 다른 포트에서 다른 서비스를 제공하는 경우가 있습니다. 예 :-실제 애플리케이션은 8080을 실행할 수 있으며이 애플리케이션에 대한 상태 검사는 컨테이너의 8089 포트에서 실행할 수 있습니다. 따라서 포트없이 서비스를 실행하면 컨테이너의 어느 포트로 요청을 리디렉션해야하는지 알 수 없습니다. 서비스는 컨테이너의 특정 포트에 도달 할 수 있도록 매핑이 있어야합니다.

kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  selector:
    app: MyApp
  ports:
    - name: http
      nodePort: 30475
      port: 8089
      protocol: TCP
      targetPort: 8080
    - name: metrics
      nodePort: 31261
      port: 5555
      protocol: TCP
      targetPort: 5555
    - name: health
      nodePort: 30013
      port: 8443
      protocol: TCP
      targetPort: 8085 

my-service : 8089에 도달하면 트래픽이 컨테이너 (targetPort)의 8080으로 라우팅됩니다. 마찬가지로 my-service : 8443을 누르면 container (targetPort)의 8085로 리디렉션됩니다.

그러나이 myservice : 8089는 kubernetes 클러스터 내부에 있으며 한 애플리케이션이 다른 애플리케이션과 통신하려고 할 때 사용할 수 있습니다. 따라서 클러스터 외부에서 서비스를 사용하려면 트래픽이 컨테이너의 포트로 리디렉션되도록 kubernetes가 실행중인 호스트 머신의 포트를 노출해야합니다. 거기에서 nodePort를 사용할 수 있습니다.

위의 예에서 host_ip : Nodeport를 통해 클러스터 외부 (Postman 또는 모든 restclient)에서 서비스를 적중 할 수 있습니다.

호스트 머신 IP가 10.10.20.20이라고 가정하면 http, metrics, health 서비스를 10.10.20.20:30475,10.10.20.20:31261,10.10.20.20:30013까지 조회 할 수 있습니다.

편집 : Raedwald 의견에 따라 편집되었습니다 .

참고 URL : https://stackoverflow.com/questions/49981601/difference-between-targetport-and-port-in-kubernetes-service-definition

반응형