NodePort 타입의 서비스_서비스를 이용해 pod외부에 노출

모든 노드의 특정 포트를 개방해서 서비스에 접근하는 방식

  1. 매니패스트 파일
vagrant@ubuntu:~/kub01$ vi hostname-svc-nodeport.yml

'YAML
apiVersion: v1
kind: Service
metadata:
  name: hostname-svc-nodeport
spec:
  ports:
    - name: web-port
      port: 8080
      targetPort: 80
  selector:
    app: webserver
  type: NodePort
'
  1. 서비스 생성 및 확인
vagrant@ubuntu:~/kub01$ kubectl apply -f hostname-svc-nodeport.yml
service/hostname-svc-nodeport created

vagrant@ubuntu:~/kub01$ kubectl get services
NAME                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
hostname-svc-nodeport   NodePort    10.111.29.91   <none>        8080:30309/TCP   7s
kubernetes              ClusterIP   10.96.0.1      <none>        443/TCP          3d1h

vagrant@ubuntu:~/kub01$ kubectl get nodes -o wide
NAME       STATUS   ROLES    AGE    VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE           KERNEL-VERSION       CONTAINER-RUNTIME
minikube   Ready    master   3d1h   v1.19.0   172.17.0.2    <none>        Ubuntu 20.04 LTS   4.15.0-117-generic   docker://19.3.8
  1. 노드(172.17.0.2)에서 서비스 포트(30309)로 접근
vagrant@ubuntu:~/kub01$ curl http://172.17.0.2:30309 -s | grep Hello
        <p>Hello,  hostname-deployment-7dfd748479-rtgzv</p>     </blockquote>
vagrant@ubuntu:~/kub01$ curl http://172.17.0.2:30309 -s | grep Hello
        <p>Hello,  hostname-deployment-7dfd748479-pp8x4</p>     </blockquote>
  1. ClusterIP 타입의 서비스와 같이 내부 IP와 서비스 이름으로 접근도 가능
vagrant@ubuntu:~/kub01$ kubectl run -it --rm debug --image=alicek106/ubuntu:curl --restart=Never -- bash
If you don't see a command prompt, try pressing enter.
root@debug:/#
root@debug:/# curl http://10.111.29.91:8080 -s | grep Hello
        <p>Hello,  hostname-deployment-7dfd748479-pp8x4</p>     </blockquote>
root@debug:/# curl http://10.111.29.91:8080 -s | grep Hello
        <p>Hello,  hostname-deployment-7dfd748479-7zdv7</p>     </blockquote>
root@debug:/# exit
exit
pod "debug" deleted

 

반응형

+ Recent posts