📃

k8s Headless Service を使って任意の IP を Service 名で名前解決する

2022/04/15に公開

Headless Service とは

https://kubernetes.io/ja/docs/concepts/services-networking/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
GitHubで編集を提案

Discussion