You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Cilium在Kubernetes中实现TLS连接建立速率限制?

用Cilium实现TCP连接速率限制(替代iptables规则)

完全可以用Cilium在Kubernetes环境中实现你需要的连接限制功能,而且相比iptables,Cilium基于eBPF的实现效率更高,也更适配K8s的动态资源模型,能有效避免大量客户端重连导致Ingress崩溃的问题。

具体实现方案

你需要通过CiliumNetworkPolicy(命名空间级)或CiliumClusterwideNetworkPolicy(集群级)定义规则,针对目标端口12871的新TCP连接进行速率管控。

以下是匹配你需求的策略示例:

apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
  name: limit-tls-port-12871
  namespace: your-namespace # 替换为Ingress或目标服务所在的命名空间
spec:
  endpointSelector:
    matchLabels:
      app: your-ingress-controller # 替换为目标Pod的标签(比如Ingress Controller的标签)
  ingress:
  - from:
    - {} # 允许所有客户端来源,对应iptables规则中的任意源
    toPorts:
    - ports:
      - port: "12871"
        protocol: TCP
      rules:
        tcp:
          rateLimit:
            count: 12          # 每分钟允许的新连接数
            interval: 1m       # 时间窗口为1分钟
            type: "new"        # 仅限制新建立的TCP连接,对应--state NEW
  # 默认拒绝所有未匹配的入站流量,对应iptables的DROP规则
  egress:
  - {} # 按需调整出站规则,这里允许所有出流量

关键配置说明

  • endpointSelector:精准定位要应用规则的Pod,确保规则只作用在你的Ingress服务上,避免影响其他应用。
  • rateLimit字段:完全对应你原来的iptables限制逻辑,type: "new"专门针对新TCP连接,count和interval组合定义速率阈值。

验证规则生效

应用策略后,用Cilium CLI确认规则状态:

cilium policy get -n your-namespace limit-tls-port-12871

若要查看速率限制的触发日志,可执行:

cilium monitor --type drop

这种方式通过eBPF在内核层直接处理连接限制,性能远优于iptables,且能更好地适配Kubernetes的动态扩缩容场景,完美解决你担心的Ingress崩溃问题。

内容的提问来源于stack exchange,提问作者King X KoK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 20:15:37