2.5 添加 IP 白名单
为提高安全性,一般情况下一些后台地址会设置 IP 访问白名单,只希望个别用户可以访问,例如 traefik 的 dashboard url,这个时候就可以使用 traefik 中的 IPWhiteList 中间件来完成。
- 创建 Traefik Middleware 资源
# 定义 IP 访问白名单的中间件 IPWhiteList,指定可以访问的 IP 列表
shell> cat ip-while-middleware.yaml
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: ip-while-list-middleware
namespace: kube-system
spec:
ipWhiteList:
sourceRange:
- 127.0.0.1/32
- 10.200.11.95
ipStrategy:
depth: 1
- 修改 dashboard 的 IngressRoute,添加 IP 白名单中间件
shell> cat traefik-ui-ingress.yaml
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: traefik-dashboard-route
namespace: kube-system
spec:
entryPoints:
- web
routes:
- kind: Rule
match: Host(`traefik.k8s.91donkey.com`) && PathPrefix(`/api`, `/dashboard`,`/`)
services:
- kind: TraefikService
name: api@internal
middlewares:
- name: ip-while-list-middleware
- 访问 URL 测试
shell> curl -XGET -I http://traefik.k8s.91donkey.com/dashboard/
2.6 熔断

服务熔断的作用类似于我们家用的保险丝,当某服务出现不可用或响应超时的情况时,为了防止整个系统出现雪崩,暂时停止该服务的调用。
- 熔断器有三种状态
- Closed:关闭状态,所有请求都正常访问。
- Open:打开状态,所有请求都会被降级。traefik 会对请求情况计数,当必定时间内失败请求百分比达到阈值,则触发熔断,断路器会完全打开。
- Recovering:半开恢复状态,open状态不是永久的,打开后会进入休眠时间。随后断路器会自动进入半开状态。此时会释放部分请求通过,若这些请求都是健康的,则会完全关闭断路器,否则继续保持打开,再次进行休眠计时。
- 支持的触发器规则
- NetworkErrorRatio:网络错误率
- ResponseCodeRatio:状态代码比率
- LatencyAtQuantileMS:分位数的延迟(以毫秒为单位)
2.7 限流
随着服务请求量的不断提升,其平均响应时间也会迅速提升,为了保护后端服务、提高服务质量、避免过载,保证服务的SLA,需要控制单位时间的请求量。这就是限流为什么愈发重大的缘由。
- 保护后端服务:限流可以协助保护后端服务免受过多的请求或恶意请求的影响。如果应用程序或服务突然接收到大量请求,超出了其处理能力,可能会导致服务不稳定甚至崩溃。通过限流,可以控制每个客户端或 IP 地址可以发送的请求数量,确保服务不会被不良流量淹没。
- 提高服务质量:通过限制每个客户端的请求速率,可以确保每个客户端都能够获得合理的响应时间,而不会由于其他客户端的请求而受到影响。这有助于提高整体的服务质量,确保用户体验良好。
- 防止滥用:有些恶意用户可能会尝试通过发送大量请求来滥用服务,例如尝试进行暴力破解、爬虫或其他不正当行为。通过限流,可以防止这种滥用行为,降低安全风险。
- 节省资源:限流可以更有效地分配服务器资源。如果某个客户端不断发送大量请求,可以限制其请求速率,以确保其他客户端也能够获得适当的服务。这有助于节省服务器资源,降低成本。
- 避免过载:限流还可以避免过载情况。当某个服务或资源处于高负载状态时,限流可以阻止更多的请求进入,以防止服务崩溃或性能下降。
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END














- 最新
- 最热
只看作者