해결된 질문
작성
·
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
추가적으로,
마침 현재 만들고 있는 강의에서 해당 내용을 설명하고 있어서 부가 설명을 드리면,
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 속성이 단순 정보성이 아니다라는 말씀으로 이해했습니다. 친절하고 자세한 답변 감사드립니다.