kubernetes - 带nginx入口 Controller 的外部服务的K8s服务LB

标签 kubernetes nginx-ingress

是否可以将k8s nginx-ingress配置为LB,以使K8s服务主动连接到托管在外部主机/端口上的外部后端(一次启用一次,连接回集群服务)?
类似于特使代理?这是在本地的 Vanilla K8上。
因此,而不是平衡来自

client -> cluster -> service.
我在寻找
service -> nginx-ingress -> external-backend.

最佳答案

定义一个不带Service的Kubernetes selector。然后,您需要定义一个Endpoint。您可以将IP和端口放入端点。通常,您不会为服务定义端点,但是由于服务将没有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

关于kubernetes - 带nginx入口 Controller 的外部服务的K8s服务LB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63594846/

相关文章:

docker - 在Window上安装ingress-nginx的问题(不是minikube)

Nginx入口 Controller 未提供Prometheus指标

powershell - jsonpath 与 kubectl 获取 "app.kuberentes.io/version"值

docker - 使用 Helm 安装时, “poddisruptionbudgets.policy ” zk-pdb“已经存在”是什么意思?

docker - 监控 Kubernetes 资源

configuration - Kubernetes 根据命名空间设置环境变量

asp.net-core - Kubernetes:将入口内部 ip 添加到环境

docker - Minikube 不从本地 docker 容器注册表中拉取图像

django - 在 nginx-ingress 后面的 aks 上托管 django

nginx - 用于路由 TCP 流量的入口 Controller