k8s 서비스 종류로는 4가지가 있다. ClusterIP, NodePortIP, LoadBalancer, ExternaName
ClusterIP: 기본 서비스 타입이며 쿠버네티스 내부에서 사용가능하다. 클러스터 내부의 포드에서ClusterIP를 이용해서 해당 서비스에 연결된 Pod에 접속이 가능하다. 외부에서는 이용이 불가능하다.
apiVersion: v1
kind: Service
metadata:
name: clusterip-service
spec:
type: ClusterIP
clusterIP: 10.233.0.100
selector:
app: webui
ports:
- protocol: TCP
port: 80
targetPort: 80
# app이 webui인 pod들의 연결주소를 10.233.0.100으로 일치시킨다.
NodePort: 각 노드에 지정된 포트번호를 할당하는 방식이다. 포트를 사용하기 때문에 해당 서비스를 사용하면 Pod를 내부가 아닌 외부에서도 접속이 가능하다. 외부에서 내부 Pod로 접속할 때 사용하는 서비스이다.
apiVersion: v1
kind: Service
metadata:
name: nodeport-service
spec:
type: NodePort
clusterIP: 10.233.0.101
selector:
app: webui
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30200 #노드포트 범위는 30100~32767 까지이다.
LoadBalancer: AWS, AZURE, GCP와 같은 클라우드 서비스를 사용할 때 사용하는 서비스이다. 클라우드에서 사용하는 로드밸런서와 연결해서 클러스터 외부에서 접근 가능하게 만드는 서비스이다.
ExternalName: 서비스를 externalName 값과 일치시킨다.
apiVersion: v1
kind: Service
metadata:
name: externalname-svc
spec:
type: ExternalName
externalName: google.com