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

subin park님의 프로필 이미지

작성한 질문수

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

3.4.외부로 노출하는 더 좋은 방법인 로드밸런서(LoadBalancer)

포트번호 관련 질문드립니다.

작성

·

294

1

kubectl get service 명령어에서 PORT(S)가

80:3xxxx/TCP와 같이 출력되고 있습니다.

실습에서

NodePort에서는 3xxxx포트로 접속했고

LoadBalancer에서는 80포트로 접속하였습니다.

타입에 따라 다른 포트를 사용하는 이유가 궁금합니다.

답변 1

2

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

안녕하세요 

타입에 따라 port가 다른 것은 노드포트가 사용할 수 있는 Port의 범위가 정해져 있기 때문입니다. 

(보통 Desgined 라고 표현하기도 합니다.)

노드포트는 30000-32768 을 사용할 수 있기 때문에 3xxxx라고 적어주신 포트를 사용해서 직접 노드에 접속했던 것입니다. 

https://www.ibm.com/docs/en/cloud-private/3.2.0?topic=configurations-extending-default-nodeport-range

그리고 로드밸런서를 80으로 접속한 것은 우리가 --port=80으로 선언하여 로드밸런서가 외부에 노출될때 접속할 수 있는 포트를 80번으로 정해주었던 것입니다. 

여기서 혼동이 올 수 있는 것이 둘다 --port로 했는데 왜 로드밸런서와 노드포트는 다른가요 일텐데..

사실 이 부분을 알기 위해서는 알아야 하는 것들이 좀 많아서 이번 과정에서는 다루지 않았습니다.

다음 과정에서 코드와 함께 다루겠지만...

rough하게 아마 지금 궁금함을 풀어드리기 위해서 설명을 좀 드리겠습니다 :) 이게 공부에 도움이 되실꺼 같아서요!

NodePort를 expose할 때

--port는 워커 노드 뒤에 연결되는 Pod/컨테이너/애플리케이션(모두 유사한 말)를 접속하기 위한 포트입니다.

LoadBalancer를 expose할 때 

 --port는 로드밸런서를 통해서 Pod에 접속되기 위해 노출되는 접속 포트 자체입니다. 

이게 아마 혼동의 원인이 되실꺼 같은데..현재로서는 디자인적인 부분이라...익숙해지거나..혹은 나중에 코드로 가면 그나마 좀 이해하기 쉽게 되어 있으니, 일단 이정도로 이해하고 코드를 볼때 다시 익숙해 지시면 좋겠습니다. :) 

이해가 어려우신 부분이 있다면 꼭 편하게 다시 얘기해주세요 

조훈 드림.