NodePort 타입의 서비스_서비스를 이용해 pod외부에 노출
모든 노드의 특정 포트를 개방해서 서비스에 접근하는 방식
- 매니패스트 파일
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
'
- 서비스 생성 및 확인
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
- 노드(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>
- 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
반응형