我非常喜欢kubernetes Ingress原理图。我目前运行ingress-nginx
个控制器将流量路由到我的kubernetes pod。
我想用它来将流量路由到'普通'机器:即vm或不属于我的kubernetes基础设施的物理节点。这可能吗?怎么样?
答案 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的健康状况。