【问题标题】:Kubernetes expose ingress resource (API object) with load balancer?Kubernetes 使用负载均衡器公开入口资源(API 对象)?
【发布时间】:2018-11-23 04:38:03
【问题描述】:

我在亚马逊 ews 上有一个 kubernetes 集群,我打算在其上运行多个应用程序。

我有多个服务组成一个这样的应用程序,我想使用亚马逊负载均衡器 (elb) 将它们公开到互联网上。我想使用 ELB,因为我不想直接使用端口 80,因为许多应用程序共享此端口,我希望每个应用程序都独立于其他应用程序定义其入口资源。

我阅读了有关 kubernetes 入口资源的信息,并认为这正是我正在寻找的。但是我没有设法通过负载均衡器的服务公开它。现在,当我阅读文档时,服务旨在公开 pod,但入口是:

管理对集群中服务的外部访问的 API 对象,通常是 HTTP。

我正在尝试做的事情是可能的,还是我没有掌握一些概念并试图做一些不可能或错误的事情?


我的代码:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
  labels:
    id: ingress
spec:
  rules:
  - http:
      paths:
      - path: /api/devices
        backend:
          serviceName: device-management
          servicePort: 3001
      - path: /api/datasources
        backend:
          serviceName: data-acquisition
          servicePort: 3001
      - path: /auth,/account,/api/tenants,/api/users
        backend:
          serviceName: device-management
          servicePort: 3001
## TODO: Find out how to add subdomain entry for auth.domain and s3.domain 
---
apiVersion: v1
kind: Service
metadata:
  name: ingress
  labels:
    id: ingress
spec:
  type: LoadBalancer
  ports:
  - name: http
    port: 80
    targetPort: 80
  - name: https
    port: 443
    targetPort: 443
  selector:
    id: ingress 

kubectl describe service ingress 的输出包含

端点:无

【问题讨论】:

  • 我已成功应用您提供的配置。未检测到问题。看起来是环境问题。它是一种什么样的安装方式?您的集群是使用 --cloud--providerer 和 --cloud-config 使用 Kops 创建的吗?
  • 勘误表。适当的参数:--cloud-provider 和--cloud-config

标签: amazon-ec2 kubernetes nginx-reverse-proxy kubernetes-ingress


【解决方案1】:

问题是我没有安装入口控制器。文档指出:

你需要一个 Ingress 控制器来满足一个 Ingress,简单地创建资源是没有效果的。

入口控制器创建一个 nginx pod 和一个服务(负载均衡器),然后将执行所有入口资源中描述的规则。 installation guide 提供了有关如何在不同平台上安装它的更多信息。

入口控制器替换了我上面描述的服务,并实现了集群中描述的所有入口资源。

【讨论】:

    猜你喜欢
    • 2021-10-27
    • 2019-05-11
    • 2017-12-22
    • 1970-01-01
    • 2020-10-23
    • 2018-12-28
    • 2019-09-13
    • 2019-05-27
    • 1970-01-01
    相关资源
    最近更新 更多