Kubernetes 如何防止 DDoS 攻击?

DDoS(分布式拒绝服务攻击)是云原生架构中的隐形杀手。你可能已经拥有了精妙的容器编排,但一场流量洪水可能轻易让整个集群“宕掉”。

那问题来了:

K8S 集群如何防御 DDoS 攻击?Ingress?Service?还是节点本身?

今天这篇文章,我们从 流量入口到容器内部,手把手带你构建 K8S 的 DDoS 防线!

一、DDoS 是怎么攻击 K8S 的?

DDoS 攻击常见手法:

  • • 🌊 海量 HTTP 请求打爆 Ingress Controller
  • • 🚪 打开 NodePort 端口,被恶意扫描和刷爆
  • • 💥 让某个 Pod CPU/Mem 暴涨,进而拖垮 Node
  • • 🌐 Flood Service DNS,让 CoreDNS 挂掉
  • • 🔗 滥用 Service/Ingress 的 LoadBalancer IP

而 Kubernetes 默认 不自带流量限速、WAF、防火墙功能

所以你必须构建一层「防御体系」。

二、K8S 防 DDoS 的 7 个关键策略

1. 🌐使用云厂商的 Anti-DDoS 防护(最外层)

如果你部署在阿里云、腾讯云、AWS、GCP:

  • • 开启 云防火墙
  • • 启用 Anti-DDoS Basic / Advanced
  • • 对 LoadBalancer 类型的 Service 启用 IP 黑白名单

✅ 这是第一道防线,优先挡住「肉眼可见的洪水攻击」。


2. 🔐限制 NodePort 的暴露范围

NodePort 虽方便,但容易被直接扫描攻击。

  • • 不建议直接暴露公网 IP 的 NodePort
  • • 使用 networkPolicy + 防火墙控制来源
  • • 或用 Ingress/LoadBalancer 替代

3. 🚦Ingress 限流 + WAF 防护

对暴露服务的 Ingress Controller(如 NGINX):

✅ 开启限流和连接控制配置:

nginx.ingress.kubernetes.io/limit-rps: "5"
nginx.ingress.kubernetes.io/limit-burst-multiplier: "3"
nginx.ingress.kubernetes.io/limit-connections: "20"

✅ 可配合 Cloudflare/WAF 网关使用,提前清洗恶意请求。


4. 🧱使用 NetworkPolicy 限制内部横向传播

K8S 默认所有 Pod 可以互相访问。

一旦某个 Pod 被攻破,可能发起内部 DDoS。

使用 NetworkPolicy 控制 Pod-to-Pod 流量:

kind: NetworkPolicy
spec:
podSelector:
    matchLabels:
      app:sensitive-app
ingress:
    -from:
        -podSelector:
            matchLabels:
              app: trusted-client

✅ 防止攻击者横向攻击其他服务。


5. 🧠服务资源限制(LimitRange)

对关键 Pod 设置:

resources:
  limits:
    cpu: "500m"
    memory: "512Mi"

这样即使被 DDoS,也不会占满整个节点资源。

✅ 避免“一个 Pod 拉垮一整台机器”的惨剧。


6. 🕵️部署 Rate Limiter 或 API Gateway

如果你提供 API 服务,RateLimiter 是必选项

可选方案:

方案说明
Istio自带限流、熔断、WAF、认证等
NGINX Ingress支持限流 annotation
Envoy轻量级服务代理 + 限流控制

7. 📊启用审计与监控,提前预警

部署监控工具:

  • • Prometheus + Grafana:查看请求量激增趋势
  • • Loki + Grafana:分析日志高频 IP
  • • Alertmanager:当请求量异常时自动告警

✅ 防御 = 监控 + 响应 + 预案

构建 K8S DDoS 防御金字塔

┌────────────────────────┐
│     云层 Anti-DDoS     │  ← 云防护、黑白名单、负载均衡器
├────────────────────────┤
│   Ingress + WAF 限速   │  ← NGINX 限流、接入网关、API Gateway
├────────────────────────┤
│     Service 限暴露     │  ← 避免 NodePort 暴露公网
├────────────────────────┤
│   Pod 资源隔离 + 策略  │  ← LimitRange、NetworkPolicy、资源限额
├────────────────────────┤
│      审计与预警系统    │  ← Prometheus、Loki、Grafana 告警
└────────────────────────┘

最后

DDoS 不可避免,但我们可以:

✅ 限速限源、
✅ 资源隔离、
✅ 防火墙 + 日志审计,

让攻击来时——你不慌、集群不崩、老板不骂。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注