gpt4 book ai didi

kubernetes - 无法在 ingress-nginx-controller 上配置 UDP

转载 作者:行者123 更新时间:2023-12-02 06:00:04 25 4
gpt4 key购买 nike

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

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

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

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

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

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

cannot create an external load balancer with mix protocols

您能告诉我如何在 Kubernetes 中正确执行此操作吗?

udp服务配置图:

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 Controller 服务 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

最佳答案

遗憾的是,许多 K8S 提供商不支持多协议(protocol) LB 服务。

看看这个 tutorial这向您展示了如何构建您自己的 UDP/TCP 负载均衡器。

您需要做的摘要是:

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

关于kubernetes - 无法在 ingress-nginx-controller 上配置 UDP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57201442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com