【问题标题】:Unable to configure UDP on ingress-nginx-controller无法在 ingress-nginx-controller 上配置 UDP
【发布时间】:2019-12-03 16:49:22
【问题描述】:

我使用 Azure Kubernetes 托管几个不同的服务。

我正在尝试通过外部 IP 配置 UDP 负载平衡。 我创建了 LoadBalancer、UDP 协议和 sessionAffinity 类型的服务。我的部署还配置了 HTTP RedinessProbe。

如果 UDP 客户端从 kubernetes 网络访问我的服务,一切正常: - 客户端对处于就绪状态的具体 pod 有粘性会话。 - 如果已经分配的 pod 已死,客户端重新平衡到另一个准备好的 pod; - 在 sessionAffinityConfig.clientIP.timeoutSeconds 过后,客户端重新平衡(即下一个数据包可能会被路由到其他准备好的 pod)。

如果我尝试从外部连接到 LoadBalancer(使用外部 IP),想法会有所不同: - 客户端对处于就绪状态的具体 pod 有粘性会话。 - 如果先前已死,客户端不会获得新的就绪 pod。仅当客户端在 sessionAffinityConfig.clientIP.timeoutSeconds 时间段内停止发送消息时才连接到新的 Pod。

为了解决这个问题,我尝试使用 ingress-nginx。我找到了关于这种配置的有用文章here

但在我完成 udp-service 配置并添加 UDP 端口后,我收到以下错误:

无法使用混合协议创建外部负载平衡器

能否请您指出如何在 Kubernetes 中正确执行此操作。

udp-services 配置图:

kind: ConfigMap
apiVersion: v1
metadata:
  name: udp-services
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
data:
  5684: "dev/dip-dc:5684"

ingress-nginx 控制器服务 YAML:

kind: Service
apiVersion: v1
metadata:
name: ingress-nginx2
namespace: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
spec:
externalTrafficPolicy: Local
type: LoadBalancer
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
ports:
- name: http
port: 80
targetPort: http
- name: https
port: 443
targetPort: https
- name: upd
port: 5684
targetPort: udp

【问题讨论】:

    标签: kubernetes udp kubernetes-ingress nginx-ingress


    【解决方案1】:

    很遗憾,许多 K8S 提供商不支持多协议 LB 服务。

    查看此tutorial,向您展示如何构建自己的 UDP/TCP 负载平衡器。

    您需要做的总结如下:

    1. 为您的应用程序创建 NodePort 服务
    2. 创建一个小型服务器实例并使用 LB 配置运行 Nginx

    【讨论】:

      猜你喜欢
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-24
      • 2019-04-30
      • 2019-07-29
      • 2019-08-08
      • 2019-11-06
      相关资源
      最近更新 更多