Skip to content

Cilium Service Mesh 架构测验

本测验用于测试您对 Cilium Service Mesh 架构、eBPF 数据路径、node Envoy proxy 和 CRD 模型的理解。

测验题目

1. Cilium Service Mesh 与传统基于 sidecar 的 Service Mesh 之间的关键区别是什么?

A. 非 Kubernetes 原生 B. 使用 eBPF 在内核层处理 L3/L4 流量 C. 在 user space 处理所有流量 D. 每个 Pod 使用多个 proxy

显示答案

答案:B. 使用 eBPF 在内核层处理 L3/L4 流量

说明: Cilium Service Mesh 使用 eBPF(extended Berkeley Packet Filter)直接在 Linux 内核中处理 L3/L4 流量。这与通过 user-space sidecar proxy 处理所有流量的传统 Service Mesh 有根本区别。仅当需要 L7 处理时,流量才会被转发到每个 node 共享的 Envoy proxy。

2. 以下哪一项不是 Cilium 程序可执行的 eBPF hook point?

A. XDP (eXpress Data Path) B. TC (Traffic Control) C. 应用层 D. cgroup

显示答案

答案:C. 应用层

说明: eBPF 程序在内核层运行,主要 hook point 包括 XDP(NIC 驱动程序)、TC(网络栈入口)、Socket Operations(socket 层)和 cgroup(进程组)。应用层位于 user space,因此不是 eBPF hook point。

3. Cilium 的每个 node 一个 Envoy proxy 模型有什么优势?

A. 可以实现更复杂的配置 B. 增加每个 Pod 的内存使用量 C. 资源效率和低延迟 D. 无法加密所有流量

显示答案

答案:C. 资源效率和低延迟

说明: 每个 node 使用一个 Envoy proxy 比为每个 Pod 部署 sidecar 使用的内存显著更少。在一个有 100 个 Pod 的 cluster 中,Istio 使用约 5GB(每个 Pod 50MB),而 Cilium 仅使用约 500MB(每个 node 100MB)。此外,L3/L4 流量直接在 eBPF 中处理,显著降低延迟。

4. CiliumEnvoyConfig CRD 的主要用途是什么?

A. 定义 Kubernetes network policy B. 为特定 Service 定义 Envoy proxy 配置 C. 定义 Pod 调度规则 D. 定义存储类

显示答案

答案:B. 为特定 Service 定义 Envoy proxy 配置

说明: CiliumEnvoyConfig 是一个 namespace-scoped CRD,用于为特定 Service 定义 Envoy proxy 设置(listener、route、cluster 等)。这使得可以配置 HTTP 路由、header 操作和负载均衡等 L7 功能。

5. 当 Cilium 替换 kube-proxy 时,哪种负载均衡算法提供一致性哈希?

A. Random B. Round Robin C. Maglev D. Least Connection

显示答案

答案:C. Maglev

说明: Maglev 是由 Google 开发的一致性哈希算法,用于 Cilium 基于 eBPF 的 load balancer。即使 backend 发生变化,该算法也能提供 session affinity,从而维持大多数现有连接。它以 O(1) 查找时间提供高性能。

6. 关于 Cilium Identity,哪项说法正确?

A. 基于 IP 地址识别 workload B. 通过哈希 Pod label 生成数字 ID C. 使用 MAC 地址进行识别 D. 必须由用户手动分配

显示答案

答案:B. 通过哈希 Pod label 生成数字 ID

说明: Cilium Identity 通过哈希 Pod label(namespace、service account、用户定义的 label 等)生成唯一的数字 ID。基于 ID 的方法的优势在于,当 IP 地址发生变化时,policy 不会受到影响。

7. 在 Cilium 中应用 L7 policy 时,流量会发生什么变化?

A. 所有流量始终通过 Envoy B. 只有具有 L7 policy 的流量会被重定向到 Envoy C. 完全绕过 Envoy D. 流量被丢弃

显示答案

答案:B. 只有具有 L7 policy 的流量会被重定向到 Envoy

说明: 为了提高效率,Cilium 仅将具有 L7 policy 的流量重定向到 node Envoy proxy。仅具有 L3/L4 policy 或没有 policy 的流量会直接在 eBPF 中处理,并在内核中快速转发。

8. Cilium 的连接跟踪在哪里执行?

A. user space 中的 conntrack daemon B. eBPF maps C. Envoy proxy D. Kubernetes API server

显示答案

答案:B. eBPF maps

说明: Cilium 使用 eBPF maps 进行连接跟踪。CT(Connection Tracking)maps 在内核中存储和查找连接状态,从而为现有连接缓存并快速应用 policy 决策。

9. CiliumClusterwideNetworkPolicy 和 CiliumNetworkPolicy 之间有什么区别?

A. 两者具有相同的 scope B. CiliumClusterwideNetworkPolicy 在整个 cluster 中生效 C. CiliumNetworkPolicy 具有更多功能 D. CiliumClusterwideNetworkPolicy 不支持 L7 policy

显示答案

答案:B. CiliumClusterwideNetworkPolicy 在整个 cluster 中生效

说明: CiliumNetworkPolicy 是 namespace-scoped,而 CiliumClusterwideNetworkPolicy 是 cluster-wide scoped。cluster-wide policy 适用于默认拒绝 policy,或必须应用于所有 namespace 的安全规则。两个 CRD 都支持 L7 policy。

10. Cilium Service Mesh 中使用的 SPIFFE ID 的格式是什么?

A. urn:spiffe:cluster/namespace/pod B. spiffe://cluster.local/ns/<namespace>/sa/<service-account> C. https://spiffe.io/id/\<pod-name> D. spiffe:<namespace>:<pod-name>

显示答案

答案:B. spiffe://cluster.local/ns/<namespace>/sa/<service-account>

说明: SPIFFE(Secure Production Identity Framework for Everyone)ID 是 workload 的唯一标识符。在 Cilium Service Mesh 中与 SPIRE 集成时,每个 workload 都会获得格式为 spiffe://cluster.local/ns/<namespace>/sa/<service-account> 的 SPIFFE ID。此 ID 用于 mTLS 身份验证。

11. 以下哪一项不是 Cilium Agent 的职责?

A. eBPF program 管理 B. Envoy 配置生成和同步 C. Kubernetes API server 职责 D. Identity 管理

显示答案

答案:C. Kubernetes API server 职责

说明: Cilium Agent 在每个 node 上运行,负责 eBPF program 管理、policy 编译、Envoy 配置生成/同步、Identity 管理、endpoint 管理和 flow logging。Kubernetes API server 是 Kubernetes control plane 的一部分,与 Cilium 相互独立。

12. 对于同一 node 上的 Pod-to-Pod 通信,Cilium 提供了什么优化?

A. 始终通过外部网络路由 B. 通过 eBPF 绕过 network stack 的直接内核路径 C. 将所有流量转发到 Envoy D. 无法通信

显示答案

答案:B. 通过 eBPF 绕过 network stack 的直接内核路径

说明: 对于同一 node 上的 Pod-to-Pod 通信,Cilium 使用 eBPF 通过直接内核路径转发流量。这会绕过整个 Linux network stack,从而实现极低延迟(~0.1ms)。