📃
k8s Headless Service を使って任意の IP を Service 名で名前解決する
Headless Service とは
Service 自身の IP を持たず、ロードバランシングやプロキシとして働かない。つまり、単に名前解決のために使うことができる Service
clusterIP: None
を指定して作成される
どう名前解決されるのか?
selector
をもつ場合はそれにマッチする Pod 等の IP を、selector
を持たない場合は同名の Endpoints リソースに従う。
任意の IP を解決させるには
Service と同じ名前の Endpoints リソースに IP を直接書く。
---
kind: Service
apiVersion: v1
metadata:
name: myservice
spec:
clusterIP: None
---
kind: Endpoints
apiVersion: v1
metadata:
name: myservice
subsets:
- addresses:
- ip: 203.0.113.1
root@tmp:/# dig myservice +search +short
203.0.113.1
root@tmp:/# dig myservice.mynamespace.svc.cluster.local +search +short
203.0.113.1
Discussion