비전공자도 이해할 수 있는 쿠버네티스 입문/실전
why-cant-access-program-running-in-pod
✅ 파드(Pod)로 띄운 프로그램에 접속이 안 되는 이유
- 도커에 대해서 공부했을 때는 컨테이너 내부와 컨테이너 외부의 네트워크가 서로 독립적으로 분리되어 있다. 하지만 쿠버네티스에서는 파드(Pod) 내부의 네트워크를 컨테이너가 공유해서 같이 사용한다.
- 파드(Pod)의 네트워크는 로컬 컴퓨터의 네트워크와는 독립적으로 분리되어 있다. 이 때문에 파드(Pod)로 띄운 Nginx에 아무리 요청을 보내도 응답이 없던 것이다.
따라서 Nginx가 띄우는 웹 페이지에 접근하려면 2가지 방법이 있다.
- 파드(Pod) 내부로 들어가서 접근하기
- 파드(Pod)의 내부 네트워크를 외부에서도 접속할 수 있도록 포트 포워딩(= 포트 연결시키기) 활용하기
하나씩 알아보자.
✅ 파드(Pod) 내부로 들어가서 Nginx로 요청보내기
파드(Pod) 내부로 접속해 Nginx로 요청을 보냈을 때, Nginx가 띄운 웹 페이지를 잘 응답하는 지 확인해보자.
# kubectl exec -it [파드명] -- bash
# 도커에서 컨테이너로 접속하는 명령어(docker exec -it [컨테이너 ID] bash)와 비슷하다.
$ kubectl exec -it nginx-pod -- bash # nginx-pod 내부 환경으로 접속
# ---Pod 내부---
$ curl localhost:80 # Nginx로 요청보내기
쿠버네티스에서는 파드(Pod) 내부의 네트워크를 컨테이너가 공유해서 같이 사용하기 때문에, 파드로 접속해서 Nginx로 요청을 보냈을 때 정상적으로 응답이 날라온 것이다.
✅ 포트 포워딩을 활용해 Nginx로 요청보내기
아래 명령어를 통해 포트 포워딩을 활용해 로컬 환경에서도 Nginx로 접속할 수 있게 만들어보자.
# kubectl port-forward pod/[파드명] [로컬에서의 포트]/[파드에서의 포트]
$ sudo kubectl port-forward pod/nginx-pod 80:80
[curl로 요청 보낸 결과]
[크롬으로 접속한 결과]
✅ 파드 삭제하기
# kubectl delete pod [파드명]
$ kubectl delete pod nginx-pod # nginx-pod라는 파드 삭제
$ kubectl get pods # 파드가 잘 삭제됐는 지 확인