通过服务名称访问minikube集群中的Pod不起作用

时间:2018-12-18 13:03:17

标签: kubernetes

我定义了以下服务:

apiVersion: v1
kind: Service
metadata:
  name: customerservice
spec:
  type: NodePort
  selector:
    app: customerapp
  ports:
  - protocol: TCP
    port: 31004
    nodePort: 31004
    targetPort: 8080

当前情况:我可以通过服务IP来触发广告连播。 现在,我的目标是通过服务名称访问customerservice,该服务目前无法使用。因此,我只需键入http://customerservice:31004而不是http://<IP>:31004

2 个答案:

答案 0 :(得分:4)

DNS解析服务仅在CoreDNS / KubeDNS提供的群集中可用。

如果您希望在计算机上本地访问此文件,则需要使用其他工具。 kubefwd是一种这样的工具:

https://github.com/txn2/kubefwd

一个稍微简单的解决方案是使用端口转发。这是在本地访问单个服务的非常简单的方法。

kubectl port-forward --namespace=whatever svs/service-name port

EDIT://我已经假设您要在本地使用服务DNS,就像我说的那样:

  

我只需键入http://customerservice:31004

是在您的Web浏览器上下文中。

答案 1 :(得分:0)

为普通服务分配了DNS A记录,该记录的格式为my-svc.my-namespace.svc.cluster.local。这解析为服务的群集IP。该DNS条目仅存在于kubernetes集群中,因此您可以从kubernetes窗格中按名称访问该服务。

现在,如果要通过名称从某个节点访问kubernetes服务,则需要使用/etc/resolve.conf修改节点的<svc_name>.<namespace>.svc.cluster.local,请关注以下{{1} }

/etc/resolve.conf

search ec2.internal default.svc.cluster.local svc.cluster.local cluster.local nameserver 10.96.0.10 是kube-dns服务的clusterIP,您可以使用nameserver

找到它

现在您可以将服务卷曲为kubectl get svc kube-dns -n kube-system