본문 바로가기

혼자하는 프로젝트/Hyper-V_쿠버네티스_서비스

Docker 컨테이너를 Nodeport를 이용하여 구현하기

# 외부로 서비스하는 방법들과 노드포트

NodePort: 노드의 자체 포트를 사용하여 포드로 리다이렉션
LoadBalancer: 외부 게이트웨이를 사용해 노드 포트로 리다이렉션
Ingress: 하나의 IP 주소를 통해 여러 서비스를 제공하는 특별한 메커니즘

# 노드포트 생성하기

port: 80 # 서비스의 포트 (브라우저 서비스 시 서비스 포트)
targetPort: 8080 # 포드의 포트 (deployment 생성 시 포트)
nodePort: 30001 # 최종적으로 서비스되는 포트

- 간단한 개념 : 노드 - svc - 포드

1. yaml 파일 생성

k8s-master-node@k8smasternode-Virtual-Machine:~/yaml$ vi http-go-nodeport.yaml

- 코드 복사 붙여넣기

apiVersion: apps/v1
kind: Deployment
metadata:
  name: http-go
  labels:
    app: http-go
spec:
  selector:
    matchLabels:
      app: http-go
  template:
    metadata:
      labels:
        app: http-go
    spec:
      containers:
      - name: http-go
        image: may9noy/http-go
        ports:
        - containerPort: 8080

2. yaml 파일 실행하기

kubectl create -f http-go-nodeport.yaml

- Nodeport 서비스 실행하기

kubectl expose deployment/http-go --type="NodePort" --port 9090 --target-port=8080 --protocol="TCP"

- 서비스 확인

k8s-master-node@k8smasternode-Virtual-Machine:~/yaml$ kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
http-go      NodePort    10.105.146.28   <none>        9090:30972/TCP   18s

k8s-master-node@k8smasternode-Virtual-Machine:~/yaml$ 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   38h   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>                 37h   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>                 37h   v1.22.3   192.168.137.254   <none>        Ubuntu 20.04.3 LTS   5.11.0-38-generic   docker://20.10.7
k8s-master-node@k8smasternode-Virtual-Machine:~/yaml$

3. 서비스 접근하기

NodeIP : ServicePort

워커노드01 : 192.168.137.105:30972
워커노드02 : 192.168.137.254:30972

- 도커 컨테이너를 Nodeport 를 활용하여 서비스 하는 방법에 대해서 알아 보았다.

- 끝 -