Skip to content

术语测验

本测验用于检验你对 Cilium、eBPF、Kubernetes 和网络相关关键术语及概念的理解。

选择题

  1. eBPF 的全称是什么?
    • A) Enhanced Berkeley Packet Filter
    • B) Extended Berkeley Packet Filter
    • C) Embedded BPF Filter
    • D) External Berkeley Protocol Filter
显示答案

答案:B) Extended Berkeley Packet Filter

说明: eBPF 是 Extended Berkeley Packet Filter 的缩写,是最初为网络数据包捕获而开发的 BPF (Berkeley Packet Filter) 的扩展版本。eBPF 是一种允许程序在 Linux kernel 内安全运行的技术,可用于网络数据包处理、系统调用跟踪和性能监控等多种用途。Cilium 将 eBPF 作为其核心技术,以提供高性能网络、安全性和可观测性功能。

  1. 在 Cilium 中,应用网络策略的基本单位是什么?
    • A) Pod
    • B) Node
    • C) Endpoint
    • D) Service
显示答案

答案:C) Endpoint

说明: 在 Cilium 中,Endpoint 指应用网络策略的网络端点,通常对应一个 Kubernetes Pod。每个 Endpoint 都有唯一的 ID,Cilium 基于这些 Endpoint 应用网络策略并控制流量。Endpoint 由 Cilium Agent 管理,并会在 Pod 创建时自动创建。你可以使用 cilium endpoint list 命令查看当前 Node 上的所有 Endpoint。

  1. XDP (eXpress Data Path) 的主要特性是什么?
    • A) L7 协议分析
    • B) 在网络驱动程序层处理数据包
    • C) TLS 加密
    • D) DNS 解析
显示答案

答案:B) 在网络驱动程序层处理数据包

说明: XDP (eXpress Data Path) 是一种基于 eBPF 的技术,可在网络驱动程序层(中断上下文)处理数据包。这绕过了 kernel 网络协议栈,从而实现极高性能的数据包处理(每秒数百万个数据包)。XDP 可以通过 DROP、PASS、TX(发送)和 REDIRECT 等操作处理数据包。Cilium 使用 XDP 实现 DDoS 防护、高性能负载均衡和数据包过滤。

  1. Cilium 的网络可观测性平台名称是什么?
    • A) Prometheus
    • B) Grafana
    • C) Hubble
    • D) Jaeger
显示答案

答案:C) Hubble

说明: Hubble 是 Cilium 的网络可观测性平台,使用 eBPF 实时监控和分析网络流。Hubble 的主要功能包括网络流监控、Service 依赖关系图生成、网络策略违规检测、性能指标收集和安全事件跟踪。Hubble 同时提供 CLI 和基于 Web 的 UI,并可与 Prometheus 和 Grafana 集成以可视化指标。

  1. VXLAN 的全称和主要用途是什么?
    • A) Virtual Extended LAN - 虚拟网络创建
    • B) Virtual Extensible LAN - L2 覆盖网络
    • C) Very Extended LAN - 大规模网络扩展
    • D) Variable Extensible LAN - 动态网络配置
显示答案

答案:B) Virtual Extensible LAN - L2 覆盖网络

说明: VXLAN (Virtual Extensible LAN) 是一种网络虚拟化技术,可在 Layer 3 (L3) 网络之上覆盖 Layer 2 (L2) 网络。VXLAN 使用 UDP 封装进行隧道传输,并通过 24-bit VNI (VXLAN Network Identifier) 支持多达约 1,600 万个网络分段。在 Cilium 中,VXLAN 用作 Node 间 Pod 通信的覆盖网络模式。替代方案包括 GENEVE 或原生路由模式。

  1. BPF Maps 的主要作用是什么?
    • A) 网络路由表管理
    • B) eBPF 程序之间的数据共享和存储
    • C) DNS 记录缓存
    • D) TLS 证书存储
显示答案

答案:B) eBPF 程序之间的数据共享和存储

说明: BPF Maps 是供 eBPF 程序存储和检索数据的键值存储。BPF Maps 还用于 kernel space 与 user space 之间的数据共享。主要类型包括 Hash Map(键值存储)、Array Map(基于索引的数组)、LRU Map(最近最少使用缓存)和 Ring Buffer(环形缓冲区)。Cilium 使用 BPF Maps 存储 service maps、backend maps、连接跟踪表等。

  1. 在 Cilium 中,表示 Pod 安全身份的数字标识符称为什么?
    • A) Pod ID
    • B) Security Context
    • C) Identity
    • D) Endpoint ID
显示答案

答案:C) Identity

说明: Cilium Identity 是根据 Pod 的 label 集合生成的数字标识符。具有相同 labels 的所有 Pod 共享相同的 Identity。基于 Identity 的策略使用 Identity 而非 IP addresses 来应用网络策略,因此即使 Pod IP 发生变化,策略也能保持一致。这种方法具有很高的可扩展性,即使在大型集群中也能高效运行。Endpoint ID 用于标识特定的 Pod 实例,与 Identity 不同。

  1. IPAM 的全称及其在 Cilium 中的作用是什么?
    • A) IP Address Management - IP 地址分配和管理
    • B) Internet Protocol Access Manager - Internet 访问管理
    • C) IP Assignment Module - IP 分配模块
    • D) Internal Protocol Address Mapper - 内部协议地址映射
显示答案

答案:A) IP Address Management - IP 地址分配和管理

说明: IPAM (IP Address Management) 是负责规划、分配、跟踪和管理 IP 地址的系统。Cilium 支持多种 IPAM 模式:Cluster Pool(集群范围的 IP 池管理)、Kubernetes(使用 Kubernetes Node CIDR)、AWS ENI(使用 AWS Elastic Network Interface)、Azure(Azure 网络集成)和 GKE(Google Kubernetes Engine 集成)。IPAM 模式的选择取决于集群环境和网络要求。

  1. WireGuard 的主要特性及其在 Cilium 中的用途是什么?
    • A) 数据包捕获工具 - 网络分析
    • B) 现代 VPN 协议 - Node 间流量加密
    • C) 负载均衡算法 - 流量分配
    • D) DNS 代理 - 名称解析
显示答案

答案:B) 现代 VPN 协议 - Node 间流量加密

说明: WireGuard 是一种现代、快速且安全的 VPN (Virtual Private Network) 隧道协议。它比 IPsec 更简单、更快,且代码库更小,因此更易于进行安全审计。在 Cilium 中,WireGuard 用于 Node 间流量加密。启用 WireGuard 后,集群中 Pod 之间的所有流量都会被透明加密。Cilium 可以使用 IPsec 或 WireGuard 实现加密。

  1. CNI 的全称和作用是什么?
    • A) Container Network Interface - 容器网络插件的标准接口
    • B) Cloud Native Infrastructure - 云原生基础设施
    • C) Cluster Network Integration - 集群网络集成
    • D) Container Node Interconnect - 容器 Node 连接
显示答案

答案:A) Container Network Interface - 容器网络插件的标准接口

说明: CNI (Container Network Interface) 是一个 CNCF 项目,定义了容器运行时与网络插件之间的标准接口。在 Kubernetes 中,kubelet 通过 CNI 接口与网络插件(Cilium、Calico、Flannel 等)通信。CNI 为添加/移除容器时的网络配置定义了标准 API,从而能够通过插件架构集成各种网络解决方案。Cilium 是 CNI 实现之一。

简答题

  1. 在 Cilium 中,提供 L7 proxy 和 service mesh 功能的开源组件名称是什么?
显示答案

答案: Envoy

说明: Envoy 是一个开源边缘和服务代理,用作 L7 proxy 和通信总线。Cilium 集成 Envoy 来实现 L7 网络策略。当你在 CiliumNetworkPolicy 中定义 L7 规则(HTTP、gRPC、Kafka、DNS 等)时,Cilium 会自动透明地部署 Envoy proxy。Envoy 还提供高级负载均衡、流量拆分和指标收集功能。

  1. 在每个 Node 上运行并负责 eBPF program 加载、网络策略实施和 Endpoint 管理的 Cilium 组件名称是什么?
显示答案

答案: Cilium Agent

说明: Cilium Agent 是 Cilium 的核心组件,在每个 Kubernetes Node 上作为 DaemonSet 运行。Agent 的主要职责包括将 eBPF programs 加载和管理到 kernel 中、实施和应用网络策略、执行 Service 负载均衡、IP 地址管理 (IPAM)、网络 Endpoint 管理、指标和日志收集,以及与 Kubernetes API server 通信。每个 Node 上的本地网络操作均由该 Node 的 Cilium Agent 处理。

  1. OSI model 中负责使用 IP addresses 路由数据包的层名称和编号是什么?
显示答案

答案: L3 (Network Layer)

说明: L3 (Network Layer) 是 OSI model 的第 3 层,负责使用 IP addresses 进行逻辑寻址和数据包路由。IP (Internet Protocol) 和 ICMP (Internet Control Message Protocol) 在该层运行。Cilium L3 策略可以根据 IP addresses 和 CIDR blocks 过滤流量。L2 (Data Link Layer) 使用 MAC addresses,而 L4 (Transport Layer) 使用 port numbers。

  1. 为一组 Pod 提供稳定网络端点的 Kubernetes resource 名称是什么?
显示答案

答案: Service

说明: Kubernetes Service 是一种抽象,可为一组 Pod 提供稳定的网络端点(ClusterIP、DNS name)。Pod 会被动态创建/删除,其 IP 也可能变化,但 Service 提供固定的 IP 和 DNS names,以实现一致的客户端访问。Cilium 通过 eBPF 实现 Service 负载均衡,能够替代 kube-proxy。Service 类型包括 ClusterIP、NodePort、LoadBalancer 和 ExternalName。

  1. 修改数据包 source IP address 的 NAT 类型名称是什么?
显示答案

答案: SNAT (Source NAT) 或 Masquerading

说明: SNAT (Source Network Address Translation) 是一种将数据包的 source IP address 转换为另一个 IP address 的 NAT 类型。Masquerading 是 SNAT 的一种特殊形式,会自动将 source IP 转换为出站 interface 的 IP。在 Cilium 中,masquerading 用于将集群内 Pod 出站流量的 source IP 转换为 Node IP。相反,DNAT (Destination NAT) 会修改 destination IP。

实践题

  1. 将以下 Cilium 相关术语与其定义匹配:Cluster Mesh、CRD、FQDN、mTLS
显示答案

答案:

  • Cluster Mesh:Cilium 的多集群网络功能。连接多个 Kubernetes 集群,以实现跨集群 Service 发现、负载均衡和网络策略执行。
  • CRD (Custom Resource Definition):通过定义自定义 resource 扩展 Kubernetes API 的方法。Cilium 使用 CRD 定义 CiliumNetworkPolicy、CiliumEndpoint 等。
  • FQDN (Fully Qualified Domain Name):主机的完整 domain name(例如,www.example.com)。Cilium FQDN 策略按 domain name 而非 IP 控制对外部 Service 的访问。
  • mTLS (mutual TLS):TLS 的扩展形式,client 和 server 都使用 certificates 对彼此进行身份验证。通过双向认证提供更强的安全性。

说明: 这些术语在 Cilium 和 Kubernetes 网络中经常使用。Cluster Mesh 适用于混合云/多云环境,CRD 是 Kubernetes 可扩展性的关键,FQDN 策略对于访问具有动态 IP 的外部 Service 的访问控制至关重要,而 mTLS 对于安全的 Service 间通信很重要。

  1. 编写使用 Cilium CLI 查询当前集群中所有 Identity 及其 labels 的命令。
显示答案

答案:

bash
# Query all Identities
cilium identity list

# Or query CiliumIdentity CRD using kubectl
kubectl get ciliumidentity -A

# Query detailed information for a specific Identity
cilium identity get <identity_id>

# Query detailed information in JSON format
kubectl get ciliumidentity <identity_id> -o json

# Filter Identities with specific labels
kubectl get ciliumidentity -o json | jq '.items[] | select(.metadata.labels."k8s:app" == "frontend")'

# Check Identity from Endpoints
cilium endpoint list
kubectl exec -n kube-system ds/cilium -- cilium endpoint list

说明: Cilium Identity 是根据 Pod 的 label 集合生成的数字标识符。cilium identity list 命令显示当前集群中所有 Identity 及其 labels。CiliumIdentity 作为 CRD 存储,因此也可以使用 kubectl 查询。Identity 是网络策略的基础,所有具有相同 labels 的 Pod 都共享相同的 Identity。

  1. 编写查询 BPF Map 内容的命令,以检查 Service 负载均衡 maps 和连接跟踪表。
显示答案

答案:

bash
# Query BPF maps from Cilium Agent pod

# Service map (Service -> Backend mapping)
kubectl exec -n kube-system ds/cilium -- cilium bpf lb list

# Backend map (backend pod information)
kubectl exec -n kube-system ds/cilium -- cilium bpf lb list --backends

# Connection Tracking table
kubectl exec -n kube-system ds/cilium -- cilium bpf ct list global

# NAT map (masquerading/SNAT information)
kubectl exec -n kube-system ds/cilium -- cilium bpf nat list

# Policy map (Identity-based policies)
kubectl exec -n kube-system ds/cilium -- cilium bpf policy get --all

# Endpoint map
kubectl exec -n kube-system ds/cilium -- cilium bpf endpoint list

# List all BPF maps
kubectl exec -n kube-system ds/cilium -- cilium bpf map list

说明: BPF Maps 是 Cilium data plane 中使用的核心数据结构。cilium bpf lb list 显示 Service 负载均衡信息,使你能够检查 Service IP/port 与 backend Pod IP/port 之间的映射。cilium bpf ct list 显示连接跟踪表,你可以在其中检查当前活动连接状态。这些命令对于网络故障排除和性能分析非常有用。

  1. 编写一个使用基于 FQDN 的网络策略的 CiliumNetworkPolicy,使 Pod 仅能与外部的 api.example.com*.googleapis.com domains 通信。
显示答案

答案:

yaml
apiVersion: "cilium.io/v2"
kind: CiliumNetworkPolicy
metadata:
  name: "fqdn-egress-policy"
  namespace: default
spec:
  endpointSelector:
    matchLabels:
      app: external-client
  egress:
  # Allow DNS queries (required for FQDN policy to work)
  - toEndpoints:
    - matchLabels:
        k8s:io.kubernetes.pod.namespace: kube-system
        k8s-app: kube-dns
    toPorts:
    - ports:
      - port: "53"
        protocol: UDP
      rules:
        dns:
        - matchPattern: "*"
  # Allow HTTPS traffic to specific FQDNs
  - toFQDNs:
    - matchName: "api.example.com"
    - matchPattern: "*.googleapis.com"
    toPorts:
    - ports:
      - port: "443"
        protocol: TCP

说明: 基于 FQDN (Fully Qualified Domain Name) 的策略按 domain name 而不是 IP address 控制对外部 Service 的访问。要使此策略生效,必须允许 DNS 查询(第一条 egress 规则)。在 toFQDNs 中,matchName 指定精确的 domain name,matchPattern 指定使用 wildcards 的模式匹配。*.googleapis.com 允许所有 Google API subdomains。FQDN 策略尤其适用于访问具有动态 IP 的外部 Service 的访问控制。

  1. 说明 Cilium Operator 的作用及其与 Cilium Agent 的差异,并编写检查 Operator 状态的命令。
显示答案

答案:

bash
# Check Cilium Operator status
kubectl -n kube-system get deployment cilium-operator

# Check Operator pod status
kubectl -n kube-system get pods -l name=cilium-operator

# Check Operator logs
kubectl -n kube-system logs -l name=cilium-operator

# Check Operator in overall Cilium status
cilium status --verbose

# Check CiliumIdentity resources (managed by Operator)
kubectl get ciliumidentity -A

# Check CiliumEndpoint resources
kubectl get ciliumendpoint -A

Cilium Operator 与 Cilium Agent 职责比较:

组件运行位置主要职责
Cilium Agent每个 Node (DaemonSet)

- eBPF program 加载/管理
- 网络策略执行
- 本地 Endpoint 管理
- Service 负载均衡
- Node 级 IPAM

Cilium Operator集群 (Deployment,1-2 个实例)

- CiliumIdentity CRD 管理
- 集群级 IPAM
- CiliumEndpoint 同步
- 垃圾回收
- Cluster Mesh 连接管理

说明: Cilium Agent 在每个 Node 上运行并处理该 Node 的网络操作。相比之下,Cilium Operator 以单个实例(或为了 HA 而运行 2 个实例)的形式在整个集群中运行,并处理集群级协调任务。Operator 维护整个集群中的 Identity 一致性,清理未使用的 resources,并管理集群级 IPAM。


返回学习材料 | Cilium 测验列表