• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

사용하는경우 nodePort 서비스를 이용한 외부에서 접근 문의

23.02.16 03:47 작성 조회수 890

1

안녕하세요, 강의 수강 중 내용을 업무에 적용시키면서 문의가 생겨 질문드려요

KUBE.png

제가 하고자 하는 것은 위 그림 왼쪽의 local 데스크탑(web browser)에서 vpn을 이용해 서버로 접속 후 kubernetes cluster 내의 pod에 접속하고자 합니다. kubernetes 는 minikube로 하나의 노드로 구성되어 있고 NodePort 타입의 Service와 그와 연결된 Pod가 있습니다.

처음엔 서비스 컴포넌트의 nodePort가 30000번, targetPort를 80번, clusterIP로 접근할때의 port 80번을 통해 local web browser에서 pod로 접속이 가능할거라고 생각했는데 안되네요;

결국 아래의 kubectl port-forward 명령어를 통해서 local web browser에서 pod로 접속할 수 있었는데요.

$ kubectl port-forward "service/Service" --address='0.0.0.0' 30001:80 &

동작하는 구체적인 과정에 대해서 이해가 부족해 질문드립니다. 서비스는 이미 30000번 포트를 외부에서 접근할수있도록 포트를 열어놓은 상태인데 왜 추가적인 port-forwarding이 필요한지 이해가 잘 안되네요. 답변 미리 감사드립니다!

답변 1

답변을 작성해보세요.

1

안녕하세요.

클러스터 설치시 네트워크 IP세팅이 잘못된게 아닌가 싶은데요,

아래 명령을 실행해보시겠어요?

kubectl get nodes -o wide

저의경우 아래와 같이 출력되며, INTERNAL-IP가 192.168.219.40으로 되어 있으며, 실제 해당 vm의 IP도 192.168.219.40입니다.

NAME      STATUS                        ROLES    AGE   VERSION    INTERNAL-IP      EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION                CONTAINER-RUNTIME
master    Ready                         <none>   65d   v1.23.12   192.168.219.40   <none>        CentOS Linux 7 (Core)   3.10.0-1160.71.1.el7.x86_64   containerd://1.3.7

혹은 EXTERNAL-IP가 있을 경우 그 IP로 접속해보셔도 됩니다.

빠른 답글 달아주셔서 감사합니다.

확인 결과 아래와 같고 실제 minikube ip도 192.168.49.2로 확인 됩니다.

혹시 잘못된 부분이 있을까요? 바쁘시겠지만 조언주시면 감사하겠습니다.

NAME       STATUS   ROLES           AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
minikube   Ready    control-plane   9d    v1.25.3   192.168.49.2   <none>        Ubuntu 20.04.5 LTS   5.4.0-135-generic   docker://20.10.20

일단 저도 minikube는 사용해보지 않아서 cluster의 동작과 정확한 차이는 잘 모르겠네요.

그래서 조금 검색해보니 아래 블로그에 접근 방법에 대해서 잘 나와있엇습니다.

참고가 될 것 같네요

https://kyeongseo.tistory.com/entry/minikube-service-web%EC%97%90%EC%84%9C-%EC%A0%91%EC%86%8D%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95