我有一个单独的虚拟机在同一个网络作为我的kubernetes在azure。我有一个Kafka吊舱,我可以用ip到达这个吊舱。问题是吊舱ip一直在变化。每次pod ip发生变化时,有没有办法获得正确的ip?
2ic8powd1#
我建议使用kubernetes服务来暴露pod。这避免了pod ip中的更改问题,因为服务ip没有更改。Kubernetes ServiceTypes 允许您指定所需的服务类型。默认值为 ClusterIP .类型值及其行为是: ClusterIP :公开群集内部ip上的服务。选择此值将使服务只能从集群中访问。这是默认的服务类型。 NodePort :在静态端口(nodeport)公开每个节点的ip上的服务。自动创建nodeport服务路由到的clusterip服务。您可以通过请求从集群外部联系nodeport服务:。 LoadBalancer :使用云提供程序的负载平衡器对外公开服务。自动创建外部负载平衡器路由到的nodeport和clusterip服务。 ExternalName :通过返回cname记录,将服务Map到externalname字段的内容(例如foo.bar.example.com)因为您是从kubernetes集群外部访问pod,所以请使用 NodePort 或者 LoadBalancer 类型服务。
ServiceTypes
ClusterIP
NodePort
LoadBalancer
ExternalName
vfh0ocws2#
正如@arghya sadhu所提到的,已经开始使用kubernetes服务,这是最好的选择。kubernetes服务的ip取决于kubernetes服务的类型。服务类型 ClusterIP ,您将获得群集ip地址服务类型 Load Balancer ,您将获得一个负载均衡器ip地址(即公共ip地址)服务类型 NodePort ,您可以使用节点的地址进行访问。但是,无论服务的类型是什么,您都可以使用集群中的kube dns来访问服务。假设你的服务名是 other-service 它暴露了端口 8080 ,在命名空间上运行 `` ,则可以按以下方式访问服务:http://other-service.:8080因为您的vm在集群之外运行,所以最好使用loadbalancer并使用loadbalancer url或ip地址访问pod。如果集群中有多个pod需要连接,可以设置入口。
Load Balancer
other-service
8080
2条答案
按热度按时间2ic8powd1#
我建议使用kubernetes服务来暴露pod。这避免了pod ip中的更改问题,因为服务ip没有更改。
Kubernetes
ServiceTypes
允许您指定所需的服务类型。默认值为ClusterIP
.类型值及其行为是:
ClusterIP
:公开群集内部ip上的服务。选择此值将使服务只能从集群中访问。这是默认的服务类型。NodePort
:在静态端口(nodeport)公开每个节点的ip上的服务。自动创建nodeport服务路由到的clusterip服务。您可以通过请求从集群外部联系nodeport服务:。LoadBalancer
:使用云提供程序的负载平衡器对外公开服务。自动创建外部负载平衡器路由到的nodeport和clusterip服务。ExternalName
:通过返回cname记录,将服务Map到externalname字段的内容(例如foo.bar.example.com)因为您是从kubernetes集群外部访问pod,所以请使用
NodePort
或者LoadBalancer
类型服务。vfh0ocws2#
正如@arghya sadhu所提到的,已经开始使用kubernetes服务,这是最好的选择。kubernetes服务的ip取决于kubernetes服务的类型。
服务类型
ClusterIP
,您将获得群集ip地址服务类型
Load Balancer
,您将获得一个负载均衡器ip地址(即公共ip地址)服务类型
NodePort
,您可以使用节点的地址进行访问。但是,无论服务的类型是什么,您都可以使用集群中的kube dns来访问服务。假设你的服务名是
other-service
它暴露了端口8080
,在命名空间上运行 `` ,则可以按以下方式访问服务:http://other-service.:8080
因为您的vm在集群之外运行,所以最好使用loadbalancer并使用loadbalancer url或ip地址访问pod。如果集群中有多个pod需要连接,可以设置入口。