Resolved
Written on
·
22
0
윈11에 docker desktop과 wsl 을 연동하여 쓰고 있습니다. 리눅스 명령어가 더 익숙해서..
수업 내용대로 다 잘 따라했습니다. deployment, service, pod 모두 정상적으로 작동이 됩니다. 하지만 localhost:30000으로 접속시 연결 거부가 뜨고,
kubectl port-forward service/spring-service 30000:8080 으로 직접적으로 포트 포워딩을 해준 후에야 localhost:30000이 접속이 됩니다.
어떻게 해야 포트 포워딩 작업 없이 바로 서비스에 접근 가능할까요..? 뭘 설정해야 하는지 모르겠습니다
Answer 2
1
안녕하세요 성진님! 질문 잘해주셨어요 ~~
질문해주신 내용에 답변드려볼게요 !
우선 Windows 11 환경에서 Docker Desktop과 WSL을 사용하시는 경우,
NodePort로 직접 접속이 안 되는 건 정상적인 현상이에요 !
Docker Desktop for Windows는 WSL2 내부에서 Kubernetes를 실행하기 때문에,
NodePort가 WSL의 네트워크 내에서만 바인딩돼서 Windows의 localhost에서 바로 접근할 수 없어요!
"어떻게 해야 포트 포워딩 작업 없이 바로 서비스에 접근 가능할까요..?"
-> 포트포워딩 대신 "Docker Desktop의 여러 설정들을 수정"해서 바로 서비스에 접근을 할 수 있어요 !
하지만 Docker Desktop 환경은 로컬 개발용으로 특수한 경우여서
이런 환경을 굳이 수정하시는 건 권장 드리지않아요 !
그래서 포트포워딩을 그대로 사용하시는 걸 훨씬 권장드려요 !
실무 환경에서도 로컬에서 테스트할 때는 포트 포워딩을 자주 사용하니 학습 목적에도 더 적합해요 ~
AWS EKS나 다른 클라우드 환경에서도
로컬에서 Pod나 Service를 직접 테스트할 때는 포트포워딩을 활용하는 경우가 많아요:)
추가로 궁금하신 사항있으시면 언제든 추가 질문 남겨주세요 !!
0
안녕하세요, 인프런 AI 인턴입니다. 성진님.
현재 쿠버네티스에서 NodePort를 사용한 서비스가 기대했던 대로 작동하지 않아 어려움이 있으신 것 같습니다. NodePort를 통해 외부 접속을 원활하게 하기 위해 몇 가지 점검 사항과 설정 변경을 제안드립니다:
노드의 IP 주소 사용: NodePort 서비스를 사용할 때는 보통 클러스터 노드의 IP(퍼블릭 혹은 프라이빗)를 통해 접근해야 합니다. WSL 환경에서는 로컬호스트가 아닌 노드의 IP를 통해 접근할 수 있는지 확인해보세요. kubectl get nodes -o wide
명령어를 통해 노드의 IP를 확인한 후, 해당 IP와 포트를 통해 접속해 보세요. 예: http://<노드IP>:30000
.
방화벽 설정 확인: 로컬 또는 네트워크 방화벽이 30000 포트를 차단하고 있는지 확인해야 합니다. 방화벽 설정에 30000 포트를 허용하는 규칙을 추가해 보세요.
Docker Desktop 네트워크 설정: Docker Desktop의 네트워크 설정에서 포트가 차단되지 않았는지 확인해보세요. 필요한 경우 네트워크 설정을 조정해서 포트를 개방하세요.
서비스 설정 검토: kubectl describe service spring-service
명령어로 서비스의 설정 상태를 확인해 보세요. 특히 NodePort가 올바르게 설정되어 있는지 확인합니다.
비슷한 문제 해결을 위한 기존의 질문과 답변을 참고하시면 더욱 도움이 될 수 있습니다. 아래 링크를 확인해 보세요:
이 링크는 성진님의 상황과 유사한 NodePort 설정 및 접근 문제를 다루고 있으며, 다른 수강생들의 해결 경험을 살펴볼 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.