생성한 Pod를 외부에 노출시켜본다.
앞서 배포한 Pod의 ip 주소로 외부에서 접속하려하면 접속할 수 없다는 창이 뜬다. 이는 쿠버네티스 내부에서 사용하는 네트워크가 외부와 격리되었기 때문이다. 쿠버네티스 내부에서 실행한 컨테이너를 외부에서 접근하려면 쿠버네티스 서비스를 사용해야 한다. 여기서 서비스 하나에 모든 노드의 고정 포트를 할당해주는 Nodeport를 설정한다.
동작은 클러스터 외부에서 노드의 IP주소와 서비스의 고정 포트(Nodeport)로 요청이 들어오면 서비스의 Port로 포워딩되고, Pod가 위치한 곳으로 찾아간다.
아래의 명령어를 실행한다.
Kubectl expose pod [pod 이름] --type=Nodeport --port=포트번호
type은 Nodeport(대문자 주의)로 적고 port에는 내부 컨테이너끼리 통신하기 위한 port를 적어준다.
그러면 서비스가 생성되는 것을 볼 수 있다.
아래의 명령어를 통해 nginx라는 서비스가 생성된 것을 확인한다.
kubectl get service
이때 PORT(S)
항목을 보면 80:31323을 볼 수 있는데, 이는 쿠버네티스 내부의 80번 포트가 외부의 31323 포트와 연결되었다는 것을 뜻한다.
외부에서 접속해보기 위해 노드 정보를 출력해 IP를 확인해본다.
kubectl get node -o wide
여기서 w1-k8s의 IP를 통해 외부에서 접속해본다.