• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    해결됨

[중급편] Networking - src-pod에서 dest-pod로 트래픽을 전달할 때 어째서 80 port가 아닌 8080 port를 사용하나요?

23.08.24 23:00 작성 조회수 167

1

안녕하세요 강사님.

먼저 좋은 강의에 감사드립니다.
이해가 가지 않는 부분이 있어서 문의 드립니다.

pod-dest의 container port는 80 입니다.
그런데 80으로는 curl 요청이 보내지지 않고, 8080에는 보내지네요?
어떤 부분에서 제가 착각하고 있는지 설명 부탁 드립니다.

apiVersion: v1
kind: Pod
metadata:
  name: pod-src
  labels:
    type: src  
spec:
  nodeSelector:
    kubernetes.io/hostname: worker-1
  containers:
  - name: container
    image: kubetm/init
    ports:
    - containerPort: 8080
---
apiVersion: v1
kind: Pod
metadata:
  name: pod-dest
  labels:
    type: dest
spec:
  nodeSelector:
    kubernetes.io/hostname: wroker-2
  containers:
  - name: container
    image: kubetm/app
    ports:
    - containerPort: 80

 

답변 2

·

답변을 작성해보세요.

1

 

추가적으로,

마침 현재 만들고 있는 강의에서 해당 내용을 설명하고 있어서 부가 설명을 드리면,

image

Service의 port (80)으로 호출시 targetPort로 포워딩 됩니다.

Service의 targetPort에는 8080으로 입력하거나 http로도 입력할 수 있는데

8080으로 입력했을 경우 바로 Container의 port를 호출해요.

이렇게만 쓸 경우 Pod에 ports자체를 다 지우고 안써도 됩니다.

근데 단점으로 Container의 port가 변경이 될 경우, 이건 Pod의 변경사항인데, Service까지 변경을 해줘야 되요.

근데 Service의 targetPort를 http라고 쓸 경우, Pod에는 반드시 ports에 name이 있어야 되고, containerPort까지 8080으로 넣어야지, Service를 호출했을 때 Pod에 포워딩이 됩니다.

그렇기 때문에 Service에서 name으로 Pod에 포트포워딩을 했을 경우에는 단순 정보성은 아니라, 필수값이라고 말씀드릴 수 있어요.

그리고 Pod와 Service간에 연결 종속성을 최대한 줄이기 위해서 실제 이렇게도 많이 쓰입니다.

 

 

추가 설명 감사드립니다. 곱씹으면서 여러 번 읽어도 잘 이해가 가지 않네요. 더 공부를 하고 시간이 지나야 설명해주신 내용을 이해할 것 같습니다. (아니면, 새로운 준비하시는 강의를 미래에 제가 수강하거나요.)

결국, 중요한 요점은 Service와 Pod를 연결 시 http로 연결한 경우 containerPort 속성이 단순 정보성이 아니다라는 말씀으로 이해했습니다. 친절하고 자세한 답변 감사드립니다.

1

안녕하세요.

일단 제 강의 자료에 containerPort: 80 부분이 잘못됐네요. 8080으로 변경해야 되고요

Pod에 containerPort는 단지 [정보성]입니다.

실제 Container에서 8080으로 App을 기동 시켜놨기 때문에, 이 포트로 호출되는 거예요.

 

감사합니다. 아래 Stackoverflow 답변에서도 마찬가지로 정보성에 관한 말을 하는군요