我定义了以下服务:
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
。
答案 0 :(得分:4)
DNS解析服务仅在CoreDNS / KubeDNS提供的群集中可用。
如果您希望在计算机上本地访问此文件,则需要使用其他工具。 kubefwd
是一种这样的工具:
https://github.com/txn2/kubefwd
一个稍微简单的解决方案是使用端口转发。这是在本地访问单个服务的非常简单的方法。
kubectl port-forward --namespace=whatever svs/service-name port
EDIT://我已经假设您要在本地使用服务DNS,就像我说的那样:
是在您的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