kubernetes - Kubernetes ExternalName 服务无法解析
问题描述
如果使用指向某个外部服务的 externalName 创建服务。
apiVersion: v1
kind: Service
metadata:
name: test
spec:
type: ExternalName
externalName: google.com
当我现在尝试进行 DNS 查找时,它不会返回任何有用的信息:
# dig test.development.svc.cluster.local.
; <<>> DiG 9.9.5-9+deb8u15-Debian <<>> test.development.svc.cluster.local.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58159
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;test.development.svc.cluster.local. IN A
;; AUTHORITY SECTION:
cluster.local. 60 IN SOA ns.dns.cluster.local. hostmaster.cluster.local. 1524736800 28800 7200 604800 60
;; Query time: 0 msec
;; SERVER: 100.64.0.10#53(100.64.0.10)
;; WHEN: Thu Apr 26 10:58:48 UTC 2018
;; MSG SIZE rcvd: 106
如果我明确查询 CNAME 类型,我会收到回复:
# dig -t CNAME test.development.svc.cluster.local.
; <<>> DiG 9.9.5-9+deb8u15-Debian <<>> -t CNAME test.development.svc.cluster.local.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54517
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;test.development.svc.cluster.local. IN CNAME
;; ANSWER SECTION:
test.development.svc.cluster.local. 30 IN CNAME google.com.
;; Query time: 0 msec
;; SERVER: 100.64.0.10#53(100.64.0.10)
;; WHEN: Thu Apr 26 10:59:55 UTC 2018
;; MSG SIZE rcvd: 76
如果我将服务更改为指向其他集群内部服务,我会得到以下 IP 地址的预期结果:
# dig dogstatsdport.development.svc.cluster.local
; <<>> DiG 9.9.5-9+deb8u15-Debian <<>> dogstatsdport.development.svc.cluster.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32857
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;dogstatsdport.development.svc.cluster.local. IN A
;; ANSWER SECTION:
dogstatsdport.development.svc.cluster.local. 30 IN CNAME dogstatsdport.default.svc.cluster.local.
dogstatsdport.default.svc.cluster.local. 30 IN A 100.68.195.103
;; Query time: 0 msec
;; SERVER: 100.64.0.10#53(100.64.0.10)
;; WHEN: Thu Apr 26 11:02:14 UTC 2018
;; MSG SIZE rcvd: 113
这里有什么遗漏/错误?以及如何解决外部记录?
集群当前在 Kubernetes 1.8.12 上运行,使用 kops 1.9.0 设置。
解决方案
问题在于使用的 kube-dns 版本 1.14.9。
应用以下命令更新到 1.14.10 修复它:
kubectl set image deployment/kube-dns -n kube-system \
kubedns=gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.10 \
dnsmasq=gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.10 \
sidecar=gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.10
https://github.com/kubernetes/dns/releases 1.14.10 状态:
合并来自 grayluck/externalname 的拉取请求 #225 修复外部名称无法通过重新加载 resolv.conf 来解决。
推荐阅读
- javascript - 反应服务器端渲染指向错误的 bundle.js
- python - Python Click:多个键值对参数
- python - gTTS 直接输出
- java - 出现错误无法加载 AppCompat ActionBar,出现未知错误。在 Android Studio 中
- javascript - 未捕获(承诺)类型错误:无法读取未定义的属性“电子邮件”
- python - 如何约束 TensorFlow 中的权重不改变符号?
- python - 更改 x-ticks matplotlib 时出现值错误
- c# - IIS 在 Web Api 中不返回仅 PDF 的 Excel
- python - 如何在 Polyglot python 库找到的实体的原始文本中获取索引?
- excel - 如果其他单元格具有特定文本,则从单元格返回值的公式