首页 文章

Kubernetes使用负载均衡器公开入口资源(API对象)?

提问于
浏览
0

我在amazon ews上有一个kubernetes集群,我打算运行多个应用程序 .

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

我读到了kubernetes ingress资源,并认为这正是我正在寻找的 . 但是,我没有设法通过带负载均衡器的服务公开它 . 现在,当我阅读文档服务是为了暴露pods,但入口是:

一个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 的输出包含

endpoints :无

1 回答

  • 0

    问题是我没有安装入口控制器 . 文件说明:

    您需要一个Ingress控制器来满足Ingress,只需创建资源就无效了 .

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

    入口控制器取代我上面描述的服务,并实现集群中所有的入口资源 .

相关问题