首页 > 解决方案 > K8s/Kubernetes CoreDNS - 添加额外的 SRV 或 A 记录(手动)

问题描述

我确实需要为特定应用程序设置 SRV 条目。

我正在运行一个启用了 coredns 和 kubernetes 插件的 kubernetes 集群。按照标准,coredns 在 coredns 数据库中创建一个 SRV 条目。

SRV 记录

K8s服务

apiVersion: v1
kind: Service
metadata:
  labels:
    run: pod-nginx
  name: svc-nginx
  namespace: default
spec:
  ports:
  - name: test
    nodePort: 31985
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: pod-nginx
  type: LoadBalancer

名称解析

我能够从 DNS 查询中得到答案。

root@test:/# dig -t srv _test._tcp.svc-nginx.default.svc.cluster.local

; <<>> DiG 9.16.1-Ubuntu <<>> -t srv _test._tcp.svc-nginx.default.svc.cluster.local
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28386
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 66150d8a64d0f92b (echoed)
;; QUESTION SECTION:
;_test._tcp.svc-nginx.default.svc.cluster.local.    IN SRV

;; ANSWER SECTION:
_test._tcp.svc-nginx.default.svc.cluster.local. 5 IN SRV 0 100 80 svc-nginx.default.svc.cluster.local.

;; ADDITIONAL SECTION:
svc-nginx.default.svc.cluster.local. 5 IN A 192.168.200.88

;; Query time: 4 msec
;; SERVER: 192.168.200.2#53(192.168.200.2)
;; WHEN: Wed Aug 12 07:23:48 UTC 2020
;; MSG SIZE  rcvd: 239

不幸的是,我确实需要另一个 SRV 字符串,因为应用程序需要不同的 SRV 分辨率。我无法编辑应用程序以适应自动创建的 SRV 字符串。

如何手动将 SRV 整体添加到 coreDNS 中?

当前的 SRV 记录:

_test._tcp.svc-nginx.default.svc.cluster.local. 5 IN SRV 0 100 80 svc-nginx.default.svc.cluster.local.

预期的 SRV 记录:

_test._tcp.default.svc.cluster.local.   86400 IN SRV 0 0 80 svc-nginx.default.svc.cluster.local.

一个记录

如何手动将 A 记录添加到 coreDNS?我不想使用“重写插件”或“k8s_external 插件”

当前A记录:

svc-nginx.default.svc.cluster.local. 5 IN A 192.168.200.88

预期的 SRV 记录:

myapp.cluster.local. 5 IN A 192.168.200.88

标签: kubernetesdnscoredns

解决方案


推荐阅读