首页 > 解决方案 > Kubernetes (AKS):将不同服务的多个端口暴露给公共负载均衡器

问题描述

我正在 Azure 上设置 Kubernetes 集群(使用 AKS)来托管 Elasticsearch、Kibana、自定义 api、UI、nginx 等。

由于我不想为每个服务单独的公共 IP,我需要一种方法来设置一个公共负载均衡器/入口,然后只需将端口号添加到那里并设置路由。

我尝试使用这个 stackoverflow 问题中提到的方法 -如何在 kubernetes 中使用负载均衡器服务公开多个端口,但没有成功。

由于有技术客户端连接到我的集群,我需要为每种技术提供服务。

基本上我需要公开 9200、5601、80 - 都在同一个 IP 上,但是在使用端口访问 IP 时,必须将用户重定向到适当的技术服务。

以下是正在寻找的示例配置。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: myingress
spec:
  rules:
  - host: myurl.domain.com
    http:
      paths:
      - path: /
        backend:
          serviceName: elasticsearch
          servicePort: 9200
      - path: /
        backend:
          serviceName: kibana
          servicePort: 5602

有什么想法吗?

标签: kuberneteskubernetes-ingressazure-aks

解决方案


对于您的问题,入口就是您想要的。您可以根据需要创建所有服务。并为您的服务公开端口。然后使用公共 IP 创建入口,并创建将访问从入口路由到后端服务的入口路由。

查看在Azure Kubernetes 服务 (AKS) 中创建入口控制器中的示例。它将向您展示需要完成的步骤。如果您有更多问题,请告诉我。


推荐阅读