노드포트 서비스는 서비스에서 설정된 포트가 모든 노드에서 개방되어 있어야 하기 때문에 로드밸런서 서비스만큼 유연하지는 않다. 또한 다중 노드 클러스터에서 로드밸런싱 효과를 얻을 수 없다는 것도 단점이다. 노드포트 서비스는 지원하는 분산 수준도 로드밸런서 서비스와 차이가 있다. 이 때문에 K3s나 도커 데스크톱에서는 잘 동작하지만, Kind에서는 그렇지 못하다. 예제 3-4는 노드포트에 대한 정의다.
예제 3-4 web-service-nodePort.yaml, 노드포트 서비스의 정의 예
apiVersion: v1
kind: Service
metadata:
name: numbers-web-node
spec:
ports:
- port: 8080 # 다른 파드가 서비스에 접근하기 위해 사용하는 포트
targetPort: 80 # 대상 파드에 트래픽을 전달하는 포트
nodePort: 30080 # 서비스가 외부에 공개되는 포트
selector:
app: numbers-web
type: NodePort # 노드의 IP 주소를 통해 접근 가능한 서비스