Linkerd 流量管理测验
本测验用于检验你对 Linkerd 流量管理的理解。
测验题目
1. 在 ServiceProfile 中,无法按路由配置的是什么?
A. 超时 B. 可重试性 C. 负载均衡算法 D. 路径条件
显示答案
答案:C. 负载均衡算法
说明: ServiceProfile 可以按路由配置超时、可重试性(isRetryable)和路径条件(method、pathRegex)。负载均衡算法是 Linkerd 的全局设置,使用 EWMA。
2. Linkerd 使用什么负载均衡算法?
A. 轮询 B. 最少连接数 C. EWMA(指数加权移动平均) D. 随机
显示答案
答案:C. EWMA(指数加权移动平均)
说明: Linkerd 使用 EWMA 算法,优先选择响应延迟更快的 endpoint。它会实时适应 endpoint 状态,并自动减少发往缓慢 endpoint 的流量。
3. TrafficSplit 遵循什么标准规范?
A. CNCF B. SMI(Service Mesh Interface) C. OpenAPI D. gRPC
显示答案
答案:B. SMI(Service Mesh Interface)
说明: TrafficSplit 是遵循 SMI(Service Mesh Interface)标准的 CRD。SMI 定义了 Service Mesh 的通用接口,以便在不同 mesh 实现之间提供兼容性。
4. retryBudget 的 retryRatio 为 0.2 表示什么?
A. 所有请求中只有 20% 会被重试 B. 失败请求中只有 20% 会被重试 C. 相对于原始请求,最多允许额外进行 20% 的重试 D. 重试预算每 20 秒重置一次
显示答案
答案:C. 相对于原始请求,最多允许额外进行 20% 的重试
说明: retryRatio 为 0.2 时,相对于原始请求数量,最多允许额外进行 20% 的重试。例如:对于 100 个请求,最多允许额外重试 20 次。这可以防止重试导致过载。
5. 以下哪项不是自动生成 ServiceProfile 的方法?
A. 从 OpenAPI/Swagger 规范生成 B. 从实时流量 tap 生成 C. 从 Protobuf 定义生成 D. 从 Kubernetes Service 自动生成
显示答案
答案:D. 从 Kubernetes Service 自动生成
说明: ServiceProfile 可以使用 linkerd profile --open-api、linkerd viz profile --tap 和 linkerd profile --proto 命令生成。它们不会从 Kubernetes Service 自动生成,必须显式定义。
6. 对于 canary Deployment,TrafficSplit backend 权重之和应是多少?
A. 必须恰好为 100 B. 必须恰好为 1 C. 任何值都可以(按比例计算) D. 必须恰好为 1000
显示答案
答案:C. 任何值都可以(按比例计算)
说明: TrafficSplit 权重按相对比例计算。weight: 90 和 weight: 10 等同于 weight: 9 和 weight: 1。总和不必为 100。
7. HTTPRoute(Gateway API)不支持以下哪种路由条件?
A. 基于 Header 的路由 B. 基于路径的路由 C. 基于 Cookie 的路由 D. 基于源 IP 的路由
显示答案
答案:D. 基于源 IP 的路由
说明: HTTPRoute 支持基于 Header、路径、方法和 Cookie(通过 Header)的路由。基于源 IP 的路由不属于 L7 路由的范围,应由 NetworkPolicy 或其他机制处理。
8. 将 Flagger 与 Linkerd 集成时使用哪个 metrics server?
A. Metrics Server B. Prometheus C. InfluxDB D. Datadog
显示答案
答案:B. Prometheus
说明: Flagger 从 Linkerd Viz 的 Prometheus 获取指标(成功率、延迟等),用于 canary 分析。安装 Flagger 时,使用 --set metricsServer=http://prometheus.linkerd-viz:9090 进行连接。
9. 当 ServiceProfile 的 isRetryable 在某条路由上为 false 时,会发生什么?
A. 所有请求都会失败 B. 不会进行重试 C. 超时会被忽略 D. 路由被禁用
显示答案
答案:B. 不会进行重试
说明: isRetryable: false 表示该路由上的请求即使失败也不会被重试。这适用于 POST 请求等非幂等操作。请求本身仍会正常处理。
10. Linkerd 如何实现 Circuit Breaker 模式?
A. Circuit Breaker CRD B. Failure Accrual C. Rate Limiter D. Timeout Policy
显示答案
答案:B. Failure Accrual
说明: Linkerd 通过 failure accrual 实现 Circuit Breaker 模式。发生连续失败时,它会暂时排除该 endpoint,使用指数退避进行重试,并在成功后恢复正常状态。
11. 如何在不进行流量拆分的情况下将流量发送到 mirror Service?
A. 使用 TrafficMirror CRD B. 直接调用 mirror Service DNS C. 所有流量都会自动镜像 D. Linkerd 不支持流量镜像
显示答案
答案:B. 直接调用 mirror Service DNS
说明: Linkerd 本身不具备 Istio 那样的流量镜像功能。多集群 mirror Service(例如 web-west)必须通过 DNS 直接调用,或使用 TrafficSplit 权重进行配置。
12. 当 ServiceProfile 的某条路由未设置 timeout 时,会发生什么?
A. 应用默认的 5 秒超时 B. 无超时(无限制) C. 请求立即失败 D. 应用全局超时
显示答案
答案:B. 无超时(无限制)
说明: 未在 ServiceProfile 中指定 timeout 的路由会无限期等待,不会超时。这适用于流式或长时间运行的操作,但通常建议显式设置超时。