Cilium 如何将身份管理从 Agent 迁移到 Operator 而不中断连接
【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/cilium
在 Cilium 中,Cilium Identity(CID)默认由每个节点上的 Cilium Agent 管理。当你希望把身份创建集中到 Cilium Operator,同时又不希望现有连接和工作负载管理受到中断时,官方文档给出了一条两阶段的迁移路径:先让 Operator 和 Agent 同时管理身份(both),再把管理权切到 Operator(operator)。这条中间态是刻意设计的过渡状态,目的就是在切换期间把对集群的影响降到最低。
该功能目前标记为 Beta(identity-management-mode.rst 中的说明),使用时如遇问题建议反馈 issue。
为什么要把身份管理切到 Operator
文档给出的背景是:集群中身份总数和 eBPF Policy Map 大小存在上限。多个 Agent 同时为同一组标签创建身份时可能出现 CID 重复;由 Operator 集中创建身份可以减少这种重复,从而提高网络策略的可靠性和集群的可扩展性。如果你的集群规模或策略复杂度已经接近这些上限,这就是迁移的动机。
迁移前的准备
- 当前模式下
identityManagementMode的默认值为agent(Helm values 中为identityManagementMode: "agent",Agent 和 Operator 的--identity-management-mode参数默认值均为agent,见 cilium-agent.md)。 - 配置入口有两个,任选其一即可:
- Helm chart 的
identityManagementMode值; cilium-configConfigMap 中的identity-management-mode标志(取值agent/operator/both)。
- Helm chart 的
- 如果后续还要调整与身份管理相关的标签(在 Cilium ConfigMap 中配置,参见 identity-management-mode.rst 中指向
identity-relevant-labels的说明),注意:当 Operator 管理身份时,必须同时重启 Operator 和 Agent 才能生效。
迁移步骤(Agent → Operator)
按文档给出的顺序执行,两步之间有一个“双方同时管理身份”的过渡态:
第一步:进入过渡态both,重启 Operator
在 Helm chart 中将identityManagementMode设为both,或等价地在cilium-configConfigMap 中设置identity-management-mode: both:
# Helm values identityManagementMode: "both"# cilium-config ConfigMap identity-management-mode: "both"设置完成后重启 Cilium Operator,让 Operator 开始承担身份管理。
第二步:确认 Operator 运行后,把 Agent 切到operator
待 Operator 正常运行后,将identityManagementMode改为operator(Helm values)或在cilium-config中设置identity-management-mode: operator,然后重启 Cilium Agent DaemonSet。至此身份创建由 Operator 集中完成。
注意文档的提示:只要 Cilium Agent 还在创建身份(即停留在both过渡态期间),CID 重复问题就可能发生,因此both状态只应作为迁移期间的临时状态,不要长期保持。
回退:从 Operator 降回 Agent 管理
如果迁移后需要回退,文档给出的安全顺序与迁移相反,同样借助both过渡态:
- 先把 Cilium Agent 降回
both:在 Helm 或cilium-config中设置identity-management-mode: both,重启 Cilium Agent DaemonSet; - 待 Agent 运行后,再把 Operator 降回
agent,重启 Operator。
不要在未让 Agent 先回到both的情况下直接把 Operator 改为agent,否则会跳过过渡态、失去双管理缓冲。
结果验证:观察 Operator 的身份管理指标
文档没有给出迁移完成的固定日志或输出样例,而是指向 metrics 文档 中的 Identity Management Mode 一节,列出了两个与 Operator 管理身份直接相关的指标:
| 指标 | 标签 | 说明(文档原文) |
|---|---|---|
cid_controller_work_queue_event_count | resource,outcome | Counts processed events by CID controller work queues |
cid_controller_work_queue_latency | resource,phase | Duration of CID controller work queues enqueuing and processing latencies in seconds |
迁移完成后,Operator 侧的 CID controller 工作队列应持续处理事件(cid_controller_work_queue_event_count有事件统计、延迟指标有读数),这可以作为 Operator 已实际承担身份管理工作的观察依据。文档没有规定具体阈值,请以你集群迁移前的基线自行对比,不要假设固定数值。
限制与注意事项
- 该功能是 Beta 特性,官方文档提示遇到问题应反馈。
both是迁移专用的临时过渡态,长期停留在该状态仍可能出现 CID 重复。- 调整身份相关标签配置时,Operator 与 Agent 都要重启才会生效,缺一不可。
- 完整说明以 Documentation/network/kubernetes/identity-management-mode.rst 为准;指标定义见 Documentation/observability/metrics.rst。
【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/cilium
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考