쿠버네티스/도커(쿠버네티스 연결을 담당하는 서비스)

맹민재·2022년 10월 17일
0

외부 사용자가 파드를 이용하는 방법을 배워본다

일반적으로 서비스라고 하면 웹 서비스나 네트워크 서비스처럼 운영체제에 속한 서비스 데몬 또는 개발 중인 서비스 등을 떠올리지만 쿠버네티스에서는 외부에서 쿠버네티스 클러스터에 접속하는 방법을 서비스라고 한다.

노드포트 서비스로 외부에서 접속하기

외부에서 쿠버네티스 클러스터의 내부에 접속하는 가장 쉬운 방법은 노드포트 서비스를 이용하는 것이다. 노드포트 서비스를 설정하면 모든 워커 노드의 특정 포트(노드포트)를 열고 여기로 오는 모든 요청을 노드포트 서비스로 전달한다. 그리고 노드포트 서비스는 해당 업무를 처리할 수 있는 파드로 요청을 전달한다.

1. 디플로이먼트로 파드 생성 및 확인

이미지는 sysnet4adimn 계정(doker hub)에 있는 echo-hname을 사용

kubectl create deployment np-pods --image=sysnet4admin/echo-hname

kubectl get pods

2. 노드포트 서비스 생성(편의를 위해 이미 정의한 오브젝트 스펙 이용) 및 확인

사용하는 오브젝트 스펙

apiVersion: v1
kind: Service
metadata:
  name: np-svc
spec:
  selector:
      app: np-pods
  ports:
      - name: http
        protocol: TCP
        port: 80
        targetPort: 80
        nodePort: 30000
  type: NodePort

kubectl create -f ~/_Book_k8sInfra/ch3/3.3.1/nodeport.yaml

kubectl get services

CLUSTER-IP는 쿠버네티스 클러스터의 내부에서 사용하는 ip로, 자동으로 지정

3. 쿠버네티스 클러스터의 워커 노드 ip 확인 후 접속해보기

3개의 워커 노드 ip 모두 화면에 파드 이름이 잘 표시되는 것을 확인. 파드가 한개이므로 보이는 이름은 모두 동일하다.

expose로 노드포트 서비스 생성하기

노드포트 서비스는 expose 명령어로도 생성할 수 있다.

1. expose 명령어를 사용해 서비스 생성하고 확인

kubectl expose deployment np-pods --type=NodePort --name=np-svc-v2 --port=80

서비스로 내보낼 디플로이먼트를 np-pods로 지정, 해당 서비스의 이름은 np-svc-v2로, 타입은 NodePort로 지정, 서비스가 파드로 보내줄 연결 포트를 80번으로 지정

expose를 사용하면 노드포트의 포트 번호를 지정할 수 없다. 포트 번호는 30000~32767에서 임의로 지정된다

서비스, NodePort 잘 정리된 곳
https://yoonchang.tistory.com/m/49

profile
ㄱH ㅂrㄹ ㅈr

0개의 댓글