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

눈물이많아요님의 프로필 이미지

작성한 질문수

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

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

해결된 질문

작성

·

226

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 답변에서도 마찬가지로 정보성에 관한 말을 하는군요