Kubernetes 使用内部端点进行通信的AKS

Kubernetes 使用内部端点进行通信的AKS,kubernetes,azure-devops,Kubernetes,Azure Devops,我知道我们可以使用负载均衡器设置具有内部或外部ip地址的应用程序。如果我使用外部Ip地址,我可以预先在Azure中将其作为公共地址保留。现在我的问题是,如果我不希望ip地址从集群外部可见,该怎么办 kubernetes yaml中的内部ip地址配置为: apiVersion: v1 kind: Service metadata: name: internal-app annotations: service.beta.kubernetes.io/azure-load-balanc

我知道我们可以使用负载均衡器设置具有内部或外部ip地址的应用程序。如果我使用外部Ip地址,我可以预先在Azure中将其作为公共地址保留。现在我的问题是,如果我不希望ip地址从集群外部可见,该怎么办

kubernetes yaml中的内部ip地址配置为:

apiVersion: v1
kind: Service
metadata:
  name: internal-app
  annotations:
    service.beta.kubernetes.io/azure-load-balancer-internal: "true"
spec:
  loadBalancerIP: 10.240.1.90
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: internal-app
现在我已经了解到,指定的IP地址必须与AKS群集位于同一子网中,并且不能已经分配给资源

如果我的aks agentpool的ip地址设置为X.X.0.0/16,并且我使用例如X.X.0.1作为我的内部负载平衡器的ip地址,我会收到错误:“专用ip地址在保留子网范围内”

我看到我在AKS中也有类似于内部端点的东西。这些可以用于内部应用程序到应用程序的通信吗


我只是想让我的应用程序在不暴露于外部世界的情况下进行内部对话。另外,我希望它是可重复的,这意味着像动态ip地址这样的东西不会太好。我需要设置为可重复,这样我就不必每次Ip地址意外更改时都更改所有应用程序的内部设置。

最简单的解决方案就是使用ClusterIP类型的服务。它将在集群内创建一个虚拟IP地址,您的应用程序可以使用该地址相互联系。您还可以使用服务的dns名称访问它:

service-name.namespace.svc.cluster.local

从库伯内特斯的任何一个舱里。这两种方法中的任何一种你都不必关心ip地址,kubernetes管理它们

谢谢你的回答。dns名称是自动分配的还是我们可以在yaml定义中指定它?安装时,很少有应用程序暴露于外界,但大多数后端应用程序不应暴露于外界。刚才我还尝试了内部负载平衡器的不同范围的adress,它成功了。我猜有些地址是保留的,有些不是,但我无法分辨在回答中指定的dns名称始终是
服务名称.namespace.svc.cluster.local
。前3个和最后1个ip地址保留在您在Azure中设置的任何子网之外,这与allI的AKS无关。我尝试使用dns名称,但在尝试从控制台测试访问时得到的结果是“无法解析主机”。我正在尝试的Dns:my-service-name.default.svc.cluster.local。所以我更改了服务名称部分和名称空间,根据kubectl,这是“默认”的。我应该换些别的吗?我无法在文档中找到有关您提供的dns命名约定的任何信息。。在您的情况下,服务名称应为
内部应用程序