我可以使用ingress-nginx来简化路由流量吗?

时间:2018-06-01 06:08:41

标签: kubernetes router kubernetes-ingress

我非常喜欢kubernetes Ingress原理图。我目前运行ingress-nginx个控制器将流量路由到我的kubernetes pod。

我想用它来将流量路由到'普通'机器:即vm或不属于我的kubernetes基础设施的物理节点。这可能吗?怎么样?

3 个答案:

答案 0 :(得分:3)

在Kubernetes中,您可以定义一个externalName服务,您可以在其中为外部服务器定义FQND。

kind: Service
apiVersion: v1
metadata:
  name: my-service
  namespace: prod
spec:
  type: ExternalName
  externalName: my.database.example.com

然后您可以在nginx规则中使用my-service

答案 1 :(得分:1)

您可以为非k8s的外部服务创建静态服务和相应的端点,然后在入口中使用k8s服务来路由流量。 您还可以看到入口文档以启用自定义上游检查 https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#custom-nginx-upstream-checks

在下面的示例中,只需根据需要更改端口/ IP

apiVersion: v1
kind: Service
metadata:
  labels:
    product: external-service
  name: external-service
spec:
  ports:
  - name: http
    port: 80
    targetPort: 80
    protocol: TCP
 ---
 apiVersion: v1
 kind: Endpoints
 metadata:
   labels:
     product: external-service
   name: external-service
 subsets:
 - addresses:
   - ip: x.x.x.x
   - ip: x.x.x.x
   - ip: x.x.x.x
   ports:
   - name: http
     port: 80
     protocol: TCP

答案 2 :(得分:-2)

我不认为这是可能的,因为ingress-nginx通过监视名称空间,服务,端点,入口资源获取pod信息,然后将流量重定向到pods,而没有特定于kubernetes的这些资源,ingress-nginx无法找到需要负载均衡的ips。并且ingress-nginx没有定义健康检查方法,它取决于kubernetes内置机制来检查正在运行的pod的健康状况。