K8s 服务 LB 到带有 nginx-ingress 控制器的外部服务
K8s service LB to external services w/ nginx-ingress controller
是否可以将 k8s nginx-ingress 配置为 LB,让 K8s 服务主动连接到托管在外部 hosts/ports 上的外部后端(一次启用一个,连接回集群服务)?
类似于 envoy 代理?这是在本地 K8s 上。
所以与其平衡来自
的负载
client -> cluster -> service.
我在找
service -> nginx-ingress -> external-backend.
在定义入口时使用 nginx.ingress.kubernetes.io/configuration-snippet
注释。使用 use-proxy-protocol: "true"
.
也启用代理协议
使用此注释,您可以向 NGINX 位置添加其他配置。
请看:ingress-nginx-issue, advanced-configuration-with-annotations.
定义一个没有 selector
的 Kubernetes Service
。然后你需要定义一个Endpoint
。您可以将 IP 和端口放在 Endpoint 中。通常您不会为服务定义端点,但因为服务没有 Selector
您需要提供与服务同名的端点。
然后将 Ingress 指向服务。
这是一个在集群上公开 Ingress 并将流量发送到 TCP 8081 上的 192.168.88.1 的示例。
apiVersion: v1
kind: Service
metadata:
name: router
namespace: default
spec:
ports:
- protocol: TCP
port: 80
targetPort: 8081
---
apiVersion: v1
kind: Endpoints
metadata:
name: router
namespace: default
subsets:
- addresses:
- ip: 192.168.88.1
- ip: 192.168.88.2 # As per question below
ports:
- port: 8081
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: router
namespace: default
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: my-router.domain.com
http:
paths:
- path: /
backend:
serviceName: router
servicePort: 80
是否可以将 k8s nginx-ingress 配置为 LB,让 K8s 服务主动连接到托管在外部 hosts/ports 上的外部后端(一次启用一个,连接回集群服务)?
类似于 envoy 代理?这是在本地 K8s 上。
所以与其平衡来自
的负载client -> cluster -> service.
我在找
service -> nginx-ingress -> external-backend.
在定义入口时使用 nginx.ingress.kubernetes.io/configuration-snippet
注释。使用 use-proxy-protocol: "true"
.
使用此注释,您可以向 NGINX 位置添加其他配置。
请看:ingress-nginx-issue, advanced-configuration-with-annotations.
定义一个没有 selector
的 Kubernetes Service
。然后你需要定义一个Endpoint
。您可以将 IP 和端口放在 Endpoint 中。通常您不会为服务定义端点,但因为服务没有 Selector
您需要提供与服务同名的端点。
然后将 Ingress 指向服务。
这是一个在集群上公开 Ingress 并将流量发送到 TCP 8081 上的 192.168.88.1 的示例。
apiVersion: v1
kind: Service
metadata:
name: router
namespace: default
spec:
ports:
- protocol: TCP
port: 80
targetPort: 8081
---
apiVersion: v1
kind: Endpoints
metadata:
name: router
namespace: default
subsets:
- addresses:
- ip: 192.168.88.1
- ip: 192.168.88.2 # As per question below
ports:
- port: 8081
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: router
namespace: default
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: my-router.domain.com
http:
paths:
- path: /
backend:
serviceName: router
servicePort: 80