expose로 노드포트 서비스 생성하기
노드포트 서비스는 오브젝트 스펙 파일로만 생성할 수 있을까요? 아닙니다. 노드포트 서비스는 expose 명령어로도 생성할 수 있습니다. 이번에는 expose로 노드포트 서비스를 생성하고 정상적으로 작동하는지 확인해 보겠습니다.
1. expose 명령어를 사용해 서비스로 내보낼 디플로이먼트를 np-pods로 지정합니다. 해당 서비스의 이름은 np-svc-v2로, 타입은 NodePort로 지정합니다(이때 서비스 타입은 반드시 대소문자를 구분해야 합니다). 마지막으로 서비스가 파드로 보내줄 연결 포트를 80번으로 지정합니다.
[root@m-k8s ~]# kubectl expose deployment np-pods --type=NodePort --name=np-svc-v2 --port=80
service/np-svc-v2 exposed
2. kubectl get services를 실행해 생성된 서비스를 확인합니다. 오브젝트 스펙으로 생성할 때는 노드포트 포트 번호를 30000번으로 지정했으나 expose를 사용하면 노드포트의 포트 번호를 지정할 수 없습니다. 포트 번호는 30000~32767에서 임의로 지정되므로 여러분이 생성한 노드포트의 포트 번호는 이 책과 다를 수 있습니다.
[root@m-k8s ~]# kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 92m
np-svc NodePort 10.102.202.92 <none> 80:30000/TCP 7m13s
np-svc-v2 NodePort 10.108.152.33 <none> 80:32122/TCP 9s