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

욕망의햄버거님의 프로필 이미지

작성한 질문수

쉽게 시작하는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}

3.5.배포한 것들 삭제하기

안녕하세요! 강의 듣다가 PORT관련 질문이 생겼습니다.

작성

·

137

0

우선, 좋은 강의 제작해주셔서 감사하다는 말씀을 드리고 싶습니다.

정말 초심자인 저에게 적격인 강의라고 생각이 듭니다.


 

실제로 nginx를 running시키고, {nodeIP}:{3xxxx} 이렇게 하면 외부에서 nginx의 Welcome 페이지가 보이는데요.

{nodeIP}:{80}으로 하면 외부에서 nginx의 Welcome 페이지를 찾지 못하더라구요.


 

바로 질문을 드리면, 이렇습니다.

1) type=NodePort 일 때, PORT를 ':' 기준으로 뒷자리 숫자를 사용하는 이유?

2) type=NodePort일 때, expose 명령어 사용 중에 --port=80으로 지정하는데 이게 ':' 기준으로 앞에 오는 숫자가 맞을까요?

3) type=LoadBalancer 일 때, PORT를 ':' 기준으로, 앞자리 숫자를 사용하는 이유?

 

사실, 1~3의 질문을 관통하는 개념이 부족해서 스스로 궁금증을 해결하지 못하는것 같은 느낌이 듭니다.

Docker를 처음 배울 때에도, Port Fowarding 개념이 잘 와닿지가 않더라구요.

Service 를 만들었을 때 PORT가 어떤 관계를 갖고 있는지, Port Fowarding과 연관해서 설명 주시면 감사하겠습니다..! ㅠ

 

답변 2

0

조훈(Hoon Jo)님의 프로필 이미지
조훈(Hoon Jo)
지식공유자

안녕하세요

일단 각 기능에 대해서는 인프런 AI가 답변을 준 것 같긴 하고요.

질문에 대해서 답변을 드리면....

1) type=NodePort 일 때, PORT를 ':' 기준으로 뒷자리 숫자를 사용하는 이유?

숫자를 이용하는 이유라는게 무슨 말인지...잘은 모르겠는데... 질문 전에 적어 주신 내용을 기반으로 답변 드리면..

노드포트라고 불리는 포트는 노드 IP에 고정되어 전체 노드에 공유되어 열리는 포트이기 때문에 30000-32768 중에 하나로 열립니다. 그리고 해당 포트로 들어온 것을 내부 컨테이너로 연결해 줍니다.

2) type=NodePort일 때, expose 명령어 사용 중에 --port=80으로 지정하는데 이게 ':' 기준으로 앞에 오는 숫자가 맞을까요?

기준으로 앞에 오는 숫자가...어떤 의미인지 정확히 모르겠는데...

노드포트와 컨테이너 포트는 다르다고 보시면 될 것 같습니다.

쉽게 시작에는 다루지 않지만 이후에 그림 쿠버에서 코드를 보는데 그때는 좀 더 구체적으로 이해하실 수 있을꺼 같아요.

3) type=LoadBalancer 일 때, PORT를 ':' 기준으로, 앞자리 숫자를 사용하는 이유?

이것도 노드포트와 목적은 유사하지만, 노드 IP로 고정되는 노드포트와 다르게 외부에 노출되는 IP를 설정할 수 있습니다. 따라서 IP가 다르기 때문에 포트를 좀 더 자유롭게 사용할 수 있습니다.

유사하게 예를 들면

다른 구(강남구,관악구)에는 같은 지번(80)을 사용할 수 있지만

같은 구(강남구)에서는 구분을 위해서 모두 다른 지번(100-80, 200-80)

을 사용해야만 해당 집(애플리케이션,파드,컨테이너)를 구분할 수 있다고 보시면 될 것 같습니다.

그리고

Service 를 만들었을 때 PORT가 어떤 관계를 갖고 있는지, Port Fowarding과 연관해서 설명 주시면 감사하겠습니다..! ㅠ

이것도 역시 무슨 말인지...잘 모르겠는데;;;; 포트포워딩은 이미 사용하고 있는 개념으로

로컬(localhost):60010으로 접근했을때 > m-k8s:22으로 연결해 줍니다.

전반적인 인프라/네트워크에 대해서 따로 살펴 보시는게 아마 이해에 도움이 되실 것 같습니다.

예를 들면 포트에 대해서 전반적인 내용은 다음의 위키와 같습니다.

https://ko.wikipedia.org/wiki/%ED%8F%AC%ED%8A%B8_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9)

https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

혹시 의도와 다른 답변이라면 다시 말씀 부탁드립니다.

0

안녕하세요, 인프런 AI 인턴입니다.

욕망의햄버거님께서 질문하신 내용에 대해, Kubernetes의 서비스 타입과 포트 관련 정보를 담고 있는 질문에 비슷한 내용을 찾아봤습니다.

  1. NodePort 서비스 유형 설명 및 포트 사용 이유:
    “포트번호 관련 질문드립니다.“에서 타입에 따라 다른 포트를 사용하는 이유에 대한 답변은 여기에서 확인할 수 있습니다. NodePort의 경우, 30000-32768 사이의 포트(range 확인 링크: IBM 문서)를 사용할 수 있으며, 이는 Kubernetes 디자인에 의해 이런식으로 설정되었습니다. 이 범위 내에서 설정된 포트를 통해 외부에서 접속할 수 있게 됩니다.

  2. Service와 Port Forwarding:
    “kubectl 명령어 질문”에 나와 있는 내용은 여기에서 확인할 수 있습니다. kubectl expose pod nginx --port=80kubectl expose pod nginx --type=NodePort --port=80의 차이점을 설명해 줍니다. 기본적으로 type을 지정하지 않으면 ClusterIP로 설정되는데, 이 타입은 클러스터 내부에서만 사용할 수 있습니다. NodePort로 설정할 경우, 클러스터 외부에서도 접근이 가능하게 됩니다. 이 때 --port=80은 Pod 내부의 서비스에 접근하기 위한 포트로 사용됩니다.

이러한 자세한 설명을 바탕으로, Kubernetes의 서비스 타입과 포트 포워딩 개념에 대한 근본적인 이해를 돕는 목적으로 공유 드리고 있습니다. NodePort의 경우 명시적으로 노출하고자 하는 포트 범위를 선택하여 외부 접근을 가능하게 하고, LoadBalancer의 경우 클라우드 프로바이더의 로드밸런서를 활용하여 외부 트래픽을 애플리케이션의 포드로 라우팅합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.