본문 바로가기

⭐ Kubernetes & EKS/서비스 (Service)

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

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

NodePort: 노드의 자체 포트를 사용하여 포드로 리다이렉션

LoadBalancer: 외부 게이트웨이를 사용해 노드 포트로 리다이렉션

Ingress: 하나의 IP 주소를 통해 여러 서비스를 제공하는 특별한 메커니즘

# 노드포트 생성하기

port: 80 # 서비스의 포트

targetPort: 8080 # 포드의 포트

nodePort: 30001 # 최종적으로 서비스되는 포트

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

- vpc는 방화벽 개념이므로, 해당 node 포트를 허용해주어야 한다.

# 노드포드 실습

# 이전 실습한 파일을 copy 하기

cp http-go-deploy.yaml http-go-np.yaml

vim http-go-np.yaml

- 모두 삭제하고 아래내용 붙여넣어 준다.

apiVersion: v1
kind: Service
metadata:
  name: http-go-np
spec:
  type: NodePort
  selector:
    run: http-go
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
      nodePort: 30001

# yaml 파일 실행하기

kubectl create -f http-go-np.yaml

- node 포트가 생성되었다는 메세지가 나온다.

kubectl get svc

# 노드의 ip를 확인하기 > compute 의 외부ip와 같음

kubectl get nodes -o wide

# node 포트의 ip로 접근하기

- 구글 클라우드 방화벽 열기

gcloud compute firewall-rules create http-go-svc-rule --allow=tcp:30001

kubectl get nodes -o wide

curl [node포트 외부 ip]:30001

curl 34.64.91.58:30001

- 다른 노드의 ip도 서비스가 가능한것을 볼 수 있다.