kubernetes 无法解析 aws 中服务的 dns 名称

kubernetes can't resolve dns name for the service in aws

我在 aws 云上的 k8s 集群中创建了一个服务

apiVersion: v1
kind: Service 
metadata:
  name: widget-svc
  labels: 
    app: widget-test
spec:
  type: LoadBalancer
  ports:
  - port: 3000
    nodePort: 30003
    protocol: TCP
  selector:
    app: widget-test

我的deployment.yml:

apiVersion: extensions/v1beta1
kind: Deployment
metadata: 
  name: widget-deploy
spec:
  replicas: 10
  template:
   metadata:
     labels:
     app: widget-test
   spec:
    containers:
    - name: widget-pod
      image: xxxxx/xxx:xxx
      ports:
      - containerPort: 3000

我可以通过端口 3000 上的负载均衡器端点访问服务,但是当我在路由 53 中为负载均衡器创建 dns 名称时,我无法通过 DNS 名称访问服务。

配置的 CNAME a301877583cad11e8b74b0ab1dd411bf-51616161.us-east-2.elb.amazonaws.com 不存在:

$ dig widgetdock.yupl.us

; <<>> DiG 9.10.6 <<>> widgetdock.yupl.us
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 42278
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;widgetdock.yupl.us.        IN  A

;; ANSWER SECTION:
widgetdock.yupl.us. 300 IN  CNAME   a301877583cad11e8b74b0ab1dd411bf-51616161.us-east-2.elb.amazonaws.com.

;; AUTHORITY SECTION:
us-east-2.elb.amazonaws.com. 60 IN  SOA ns-1076.awsdns-06.org. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 60

;; Query time: 73 msec
;; SERVER: 172.31.254.1#53(172.31.254.1)
;; WHEN: Thu Apr 26 15:22:30 CEST 2018
;; MSG SIZE  rcvd: 212 

看到 status: NXDOMAIN 表示此域不存在。

我解决了这个问题,问题出在负载均衡器的安全组规则上。允许安全组规则后,它工作正常