외부 사용자가 파드를 이용하는 방법을 배워본다
일반적으로 서비스라고 하면 웹 서비스나 네트워크 서비스처럼 운영체제에 속한 서비스 데몬 또는 개발 중인 서비스 등을 떠올리지만 쿠버네티스에서는 외부에서 쿠버네티스 클러스터에 접속하는 방법을 서비스라고 한다.
외부에서 쿠버네티스 클러스터의 내부에 접속하는 가장 쉬운 방법은 노드포트 서비스를 이용하는 것이다. 노드포트 서비스를 설정하면 모든 워커 노드의 특정 포트(노드포트)를 열고 여기로 오는 모든 요청을 노드포트 서비스로 전달한다. 그리고 노드포트 서비스는 해당 업무를 처리할 수 있는 파드로 요청을 전달한다.
이미지는 sysnet4adimn 계정(doker hub)에 있는 echo-hname을 사용
kubectl create deployment np-pods --image=sysnet4admin/echo-hname
kubectl get pods
사용하는 오브젝트 스펙
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 모두 화면에 파드 이름이 잘 표시되는 것을 확인. 파드가 한개이므로 보이는 이름은 모두 동일하다.
노드포트 서비스는 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