apiVersion: v1
kind: Service
metadata:
name: svc-1
spec:
selector:
app: pod
ports:
- port: 9000
targetPort: 8080
**type: ClusterIP # 생략 가능(기본값)**
externalTrafficPolicy: Local
옵션을 주면 요청된 node에 연결되어 있는 Pod에게만 요청을 보냄apiVersion: v1
kind: Service
metadata:
name: svc-2
spec:
selector:
app: pod
ports:
- port: 9000
targetPort: 8080
nodePort: 30000 # 30000 ~ 32767
**type: NodePort**
apiVersion: v1
kind: Service
metadata:
name: svc-3
spec:
selector:
app: pod
ports:
- port: 9000
targetPort: 8080
**type: LoadBalancer**
Service, Pod의 FQDN(Fully Qualified Domain Name)과 ip
Pod의 도메인명이 변경되기 때문에 다른 Pod의 도메인명으로 직접 ip를 알아낼 수 없지만, Service를 통해 다른 Pod에 접근하려 할 경우 ClusterIP 만으로도 접근이 가능
Pod가 Service를 거치지 않고 Pod에 직접 연결해야 할 경우 Service를 Headless로 만들어야 함
Service, Pod의 FQDN과 ip
⇒ Headless Service를 연결한 Pod의 경우 다른 Pod에서 직접 접근 가능해짐
clusterIP: None
→ Service에 IP할당 없음hostname: {도메인명}, subdomain: {service 이름}
apiVersion: v1
kind: Endpoints
metadata:
name: endpoint
subsets:
- addresses:
- ip: {pod ip}
ports:
- port: 8080
apiVersion: v1
kind: Service
metadata:
name: externalName
spec:
type: ExternalName
externalName: github.github.io