본문 바로가기

⭐ Kubernetes & EKS/Kubernetes 예제

ClusterIP 에서 Nodeport 로 변경하는 방법

# 클라우드 네이티브가 아닌 로컬 환경에서 작업을 해야하는 경우가 많다. (비용때문에...)
서비스를 생성하면 기본은 ClusterIP를 가지고 생성이 된다. 이런경우 외부에서 접근이 가능하지 않으므로 실제 서비스를 웹어서 구현하기가 어렵다. (쿠린이라 정확하지않을 수 있다.) 그래서 NodePort를 활용하여 서비스 접근을 하게된다. 

- 그래서 ClusterIP를 Nodeport로 변경하는 방법에 대해서 알아보자.

# 환경설명

일단 현재 nginx pod 5개가 구동중에 있다.
문어가 5개의 pod를 관리하고 있는 중이다.

1. 서비스 및 pod 조회

- 타입이 클러스터IP로 정의 되어있는것을 확인 할 수있다.

k8s-master-node@k8smasternode-Virtual-Machine:~$ kubectl get pod -n nginx
NAME                       READY   STATUS    RESTARTS   AGE
mynginx-69d586ff67-fwtbt   1/1     Running   0          14m
mynginx-69d586ff67-gvggm   1/1     Running   0          4h23m
mynginx-69d586ff67-ln8n2   1/1     Running   0          14m
mynginx-69d586ff67-s5b27   1/1     Running   0          4h19m
mynginx-69d586ff67-wv2nm   1/1     Running   0          4h19m
k8s-master-node@k8smasternode-Virtual-Machine:~$ kubectl get svc -n nginx
NAME      TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
mynginx   ClusterIP   10.96.157.97   <none>        80/TCP    4h23m

2. 타입을 Nodeport로 변경

k8s-master-node@k8smasternode-Virtual-Machine:~$ kubectl patch svc mynginx -n nginx -p '{"spec": {"type": "NodePort"}}'
service/mynginx patched

k8s-master-node@k8smasternode-Virtual-Machine:~$ kubectl get svc -n nginx
NAME      TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
mynginx   NodePort   10.96.157.97   <none>        80:31533/TCP   4h26m

3. 서비스 접속 정보 확인

- 노드 포트로 접속을 하려면 노드의 ip를 알아야 한다.
- workernode01과 workdernode02의 ip 주소를 확인한다.

k8s-master-node@k8smasternode-Virtual-Machine:~$ kubectl get nodes -o wide
NAME                              STATUS   ROLES                  AGE    VERSION   INTERNAL-IP       EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
k8smasternode-virtual-machine     Ready    control-plane,master   2d6h   v1.22.3   192.168.137.50    <none>        Ubuntu 20.04.3 LTS   5.11.0-38-generic   docker://20.10.7
k8sworkernode01-virtual-machine   Ready    <none>                 2d6h   v1.22.3   192.168.137.105   <none>        Ubuntu 20.04.3 LTS   5.11.0-38-generic   docker://20.10.7
k8sworkernode02-virtual-machine   Ready    <none>                 2d6h   v1.22.3   192.168.137.254   <none>        Ubuntu 20.04.3 LTS   5.11.0-38-generic   docker://20.10.7

4. url을 통한 접속 테스트

접속 url : node의ip:nodeport번호 즉,
workernode01 : 192.168.137.105:31533
workdrnode02 : 192.168.137.254:31533 이 될 것이다.

- 접속 테스트 = 정상적으로 접속이 완료 되었다.

5. 추가

ClusterIP에서 NodePort로 타입을 변경하게 되면 아래와 같이 NodePort가 부여 된다.

- 한마디로 NodePort 타입은 Node에 직접 연결이 가능한 포트를 열고 해당 서비스 포트와 맵핑 된다고 이해하면 된다.

- 끝 -