5.2. Connecting to service living outside the cluster
Introducing service endpoints
service는 사실 pod와 직접 링크되는게 아니라 Endpoint resource가 중간에 존재한다.
$ kubectl describe svc kubia
Name: kubia
Namespace: default
Labels: <none>
Annotations: <none>
Selector: app=kubia
Type: ClusterIP
IP: 10.100.198.79
Port: http 80/TCP
TargetPort: 8080/TCP
Endpoints: 172.17.0.7:8080,172.17.0.8:8080,172.17.0.9:8080
Port: https 443/TCP
TargetPort: 8443/TCP
Endpoints: 172.17.0.7:8443,172.17.0.8:8443,172.17.0.9:8443
Session Affinity: ClientIP
다른 resource 처럼 kubectl get
으로 볼 수 있음
$ kubectl get endpoint kubia
NAME ENDPOINTS AGE
kubia 172.17.0.7:8443,172.17.0.8:8443,172.17.0.9:8443 + 3 more... 22h
Manually configuring service endpoints
service와 endpoint를 모두 직접 만들어야 수동으로 endpoints를 관리하는 service를 생성 가능하다.
external-service.yaml
apiVersion: v1
kind: Service
metadata:
name: external-service 1
spec: 2
ports:
- port: 80
80포트로 열린 external-service
라는 service를 만들었지만 따로 pod selector를 지정하지 않았기 때문에 endpoint가 자동으로 만들어지지 않는다.
external-service-endpoints.yaml
apiVersion: v1
kind: Endpoints
metadata:
name: external-service 1
subsets:
- addresses:
- ip: 11.11.11.11 2
- ip: 22.22.22.22 2
ports:
- port: 80 3