kube-dns无法解析节点端口类型的服务主机名(但无头的作品)

时间:2018-10-02 17:50:47

标签: kubernetes kube-dns

我正在尝试使用StatefulSet创建Cassandra服务。 当我使用如下所示的无头服务时,一切正常,Cassandra pod的主机名是cassandra-0.cassandra.default.svc.cluster.local 而且我可以从另一个Pod ping此主机名。

apiVersion: v1
kind: Service
metadata:
  labels:
    app: cassandra
  name: cassandra
spec:
  clusterIP: None
  ports:
    - port: 9042
  selector:
    app: cassandra

但是,由于我需要将Cassandra服务公开到群集的外部,然后将服务更改为节点端口类型,如下所示,然后DNS停止工作,其主机名为cassandra-0.cassandra.default.svc。 cluster.local无法再访问。

apiVersion: v1
kind: Service
metadata:
  labels:
    app: cassandra
  name: cassandra
spec:
  type: NodePort
  ports:
    - port: 9042
      nodePort: 30042
  selector:
    app: cassandra

关于我在做什么的任何想法,请告诉我是否需要其他信息。

谢谢。

(更新:) 在我的设置中,服务位于子集10.96.0.0/12中,而pod位于子网10.244.0.0/16中。

使用类型NodePort时,在10.96.0.0/12子集中为cassandra服务分配了cluster-ip

root@kube-master:/hostdir# kubectl get all
NAME              READY     STATUS    RESTARTS   AGE
pod/cassandra-0   1/1       Running   0          11m

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
service/cassandra    NodePort    10.98.104.176   <none>        9042:30042/TCP   11m
service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP          16m

NAME                         DESIRED   CURRENT   AGE
statefulset.apps/cassandra   1         1         11m

nslookup结果是

root@cassandra-0:/# nslookup cassandra.default
Server:     10.96.0.10
Address:    10.96.0.10#53

Name:   cassandra.default.svc.cluster.local
Address: 10.98.104.176

虽然所有其他Pod都在子集10.244.0.0/16中,所以我认为这是为什么对cassandra-0.cassandra.default.svc.cluster.local进行ping的原因,因为子集10.96.0.0/这些吊舱无法访问12。

root@kube-master:/hostdir# kubectl get pods -o wide
NAME          READY     STATUS    RESTARTS   AGE       IP           NODE
cassandra-0   1/1       Running   0          12m       10.244.4.2   kube-node-2

那我该如何解决这个问题?我试图将service和pod放在同一个子集中,但是似乎不能以这种方式工作,因为在这种情况下,我什至无法ping通任何东西。

谢谢。

0 个答案:

没有答案