Kubernetes从pod内部访问节点上的端口?

Kubernetes从pod内部访问节点上的端口?,kubernetes,Kubernetes,我正在尝试访问一个服务,该服务监听我的裸机(Ubuntu20.04)集群中每个节点上运行的端口,该端口位于一个pod内。我可以使用其中一个节点的真实IP地址,它可以正常工作。但是,我需要吊舱连接到自己节点上的端口。我不能在豆荚中使用“127.0.0.1” 更多信息:我正在尝试将一系列现有服务整合到K8中。我们使用旧版本的concur进行服务发现,并在8600上提供DNS的每个节点上运行它。我找到了如何编辑coredns Corefile来添加一个concur{}块,以便查找.concur工作 c

我正在尝试访问一个服务,该服务监听我的裸机(Ubuntu20.04)集群中每个节点上运行的端口,该端口位于一个pod内。我可以使用其中一个节点的真实IP地址,它可以正常工作。但是,我需要吊舱连接到自己节点上的端口。我不能在豆荚中使用“127.0.0.1”

更多信息:我正在尝试将一系列现有服务整合到K8中。我们使用旧版本的concur进行服务发现,并在8600上提供DNS的每个节点上运行它。我找到了如何编辑coredns Corefile来添加一个concur{}块,以便查找.concur工作

consul {
    errors
    cache 30
    forward . 157.90.123.123:8600
}
但是,我需要将该IP地址替换为“运行coredns pod的节点的地址”


有什么想法吗?还是用其他方法来解决这个问题?Tx.

来自@mdaniel的评论有效。德克萨斯州

编辑coredns部署。在volumeMounts之后将其添加到容器:

env:
- name: K8S_NODE_IP
  valueFrom:
    fieldRef:
      fieldPath: status.hostIP
编辑coredns配置映射。添加到Corefile的底部:

consul {
    errors
    cache 30
    forward . {$K8S_NODE_IP}:8600
}
检查DNS是否正常工作

kubectl run tmp-shell --rm -i --tty --image nicolaka/netshoot -- /bin/bash
nslookup myservice.service.consul
nslookup www.google.com
exit

您是否已经意识到(如果更容易的话,我认为您也可以将向下的API作为卷装载)?Tx。这可能会起作用。似乎coredns将在Corefile中展开环境变量: