创建指向SRV DNS记录的服务

时间:2020-01-14 15:06:25

标签: kubernetes

在Kubernetes上,我可以创建一个Service,然后创建一个Endpoint,它指向一组外部IP地址,因此我可以在群集中使用该service。例如:

kind: Service
apiVersion: v1
metadata:
  name: elasticsearch
spec:
  type: ClusterIP
  ports:
  - port: 9200
    targetPort: 9200

---

kind: Endpoints
apiVersion: v1
metadata:
  name: elasticsearch
subsets:
- addresses:
  - ip: 10.128.1.2
  - ip: 10.128.1.3
  - ip: 10.128.1.4
  - ip: 10.128.1.5
  ports:
  - port: 9200

这很好,但是要保持更新很痛苦。

我以为也许可以用Service创建一个ExternalName,但是我不确定是轮循还是仅缓存DNS结果并直接使用:

kind: Service
apiVersion: v1
metadata:
  name: elasticsearch-dns
spec:
  type: ExternalName
  externalName: elasticsearch.foo.bar

是否可以通过外部DNS在Kubernetes上创建服务,从而将请求循环到DNS的多个IP地址?

1 个答案:

答案 0 :(得分:1)

当任何应用程序查找名称elasticsearch-dns时,群集DNS会返回值为elasticsearch.foo.bar的CNAME记录。因此,kubernetes不会缓存IP或任何内容。

From docs

apiVersion: v1
kind: Service
metadata:
  name: my-service
  namespace: prod
spec:
  type: ExternalName
  externalName: my.database.example.com

在查找主机my-service.prod.svc.cluster.local时, 群集DNS服务返回带有值的CNAME记录 my.database.example.com。访问我的服务的工作方式与 其他服务,但区别在于重定向 发生在DNS级别,而不是通过代理或转发。