干货 | 携程 Cilium+BGP 云原生网络实践

本文介绍了携程在生产环境中使用 Cilium+BGP 的云原生网络方案,包括网络演进背景、Cilium 的定制化部署、BGP peering 模型以及云原生安全的尝试。文章详细阐述了 Cilium 的网络实践,如使用 BIRD 代替 kube-router,以及如何解决多集群和混合基础设施的安全问题。
摘要由CSDN通过智能技术生成

作者简介

 

Arthur,Stephen,Jaff,Weir,几位均来自携程云平台基础设施和网络研发团队,目前专注于网络和云原生安全相关的开发。

Cilium 是近两年最火的云原生网络方案之一。Cilium 的核心基于 eBPF,有两大亮点:基于 eBPF 的灵活、高性能网络,以及基于 eBPF 的 L3-L7 安全策略实现。

携程 2019 年开始在生产环境使用 Cilium,本文将介绍 Cilium 在携程的落地情况,以及我们基于 Cilium 的、覆盖虚拟机、物理机和容器的云原生安全的一些探索。

一、网络演进简要回顾

从 2013 年到 2018 年,我们经历了物理机到虚拟机再到容器的基础设施演进,但网络技术栈基本都是沿用 Neutron+OVS —— 即使对我们(前期)的 Kubernetes 集群也是如此。但业务开始往 Kubernetes 迁移之后,这套 Neutron+OVS 的网络方案越来越捉襟见肘,尤其是在部署密度更高、规模更大的容器面前,这种大二层网络模型的软件和硬件瓶颈暴露无遗 [1]。

为了解决这些问题,更重要的,为了满足云原生业务的各种需求(例如,支持Kubernetes 的 Service 模型),我们调研了很多较新的网络方案,综合评估之后,选择了 Cilium+BGP 的组合 [3]。

Fig 1-1. Networking solutions over the past years [2]

Cilium+BGP 方案 2019 年底正式在生产环境落地,我们打通了 Cilium 网络和现有网络,因此能灰度将容器从 Neutron 迁移到 Cilium。


二、云原生网络实践

作为 Cilium 的早期用户之一,我们对 Cilium 的实现和部署做了一些修改或定制化,以使这套方案能平滑地落地到现有的基础设施之中,例如 [2],

1)用 docker-compsoe + salt 来部署,而不是采用默认的 daemonset+configmap 方式。

这样每台 node 上的 cilium-agent 都有独立配置,我们能完全控制发布灰度,将 变更风险降到最低。

2)用 BIRD 作为 BGP agent,而不是采用默认的 kube-router。

kube-router 开箱即用,但缺少对 ECMP、BFD 等高级功能的支持,不符合我们生产环境的要求。

3)为了保证某些业务的平滑迁移,我们开发了 StatefulSet/AdvancedStatefulSet 固定 IP 的支持(需要 sticky 调度配合)。

4)定制化了监控和告警。

5)其他一些自定义配置。

我们之前的一篇文章 [2] 对此有较详细的介绍,有兴趣可以移步。下面讨论几个之前介绍较少或者没有覆盖到的主题。


 

2.1 BGP 建连模型

Cilium+BIRD 方案中,以宿主机为界,网络可以大致分为两部分,如图 2-1 所示。

Fig 2-1. High level topology of the Cilium+BGP solution [2]

1)宿主机内部网络:由 Cilium(及内核协议栈)负责,职责包括:

  • 为容器创建和删除虚拟网络。

  • 为容器生成、编译和加载 eBPF。

  • 处理同宿主机内容器之间的网络通信。

2)跨宿主机网络:由 BGP(及内核路由模块)负责,职责包括:

  • 与数据中心网络交换路由(PodCIDRs)。

  • 对出宿主机的流量进行路由。

对于跨宿主机部分,需要确定要采用哪种 BGP peering 模型,这个模型解决的问题包括 :

1)BGP agent 的职责,是作为一个全功能路由控制服务,还是仅用作 BGP speaker?

2)宿主机和数据中心的哪些设备建立 BGP 邻居?

3)使用哪种 BGP

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值