登录
立即咨询
谐云 谐云
在这里探索云原生
Cilium 流量治理功能与部署实践
2022年12月14日

一、Cilium 概述

Cilium是一个具备API感知的网络和安全的开源软件,用于透明保护使用Docker和Kubernetes等Linux容器管理平台部署的应用程序服务之间的网络连接。Cilium的基础是一种称为BPF的新Linux内核技术,该技术可在Linux自身内部动态插入强大的安全可见性和控制逻辑。

由于BPF在Linux内核中运行,因此可以应用和更新Cilium安全策略,而无需更改应用程序代码或容器配置。与传统的sidecar代理模式相比,不需要在应用容器边上单独部署一个流量代理的容器。可以基于Linux内核收集网络包信息,利用eBPF程序编写包过滤的规则,减少Linux内核网络栈开销。

二、组件及安装方式

包含cilium、hubble、etcd和eBPF四个部分。其中eBPF是Linux 高版本内核自带的特性,无需额外部署。从图中可以看出,以DaemonSet的方式在每一个k8s Node部署了一个Agent,并且与相应的控制面Cilium Operator交互(实例数至少一个)。Hubble提供了一些基础监控的功能,并提供了一个可视化的UI界面,可以基于namespace,协议类型,入流出流等进行一些过滤。在没有service请求的情况下,UI界面下无法展示。

Cilium各组件交互

Mesh 分支的安装:

[1] 系统要求

Linux Kernel>=4.9.17

clang+LLVM>=10.0

不部署calico和flannel,将cilium作为CNI.

[2] cilium install --version -service-mesh:v1.11.0-beta.1 --config enable-envoy-config=true --kube-proxy-replacement=probe --datapath-mode=vxlan

[3] cilium hubble enable --ui

三、官方 mesh demo 功能总结

  1. 作为CNI,提供了CiliumNetworkPolicy。

  2.  CiliumEnvoyConfig 可以定义负载均衡策略,重写访问路径。

  3.  kafka topic的读写也可以通过CiliumNetWorkPolicy定义。

  4. ingress与cilium融合需要k8s1.19+,external-ip需要云厂商提供LB能力,否则会一直pending。支持以 RESTFUL API方式从集群外访问 Service。

  5. 支持以 4 层的方式访问 Service,例如通过 IP+Port。包括 externalIPs Service、LoadBalancer Service。

https://github.com/cilium/cilium-service-mesh-beta

CiliumEnvoyConfig路径重写演示

CiliumNetWorkPolicy拒绝策略演示

正常情况:

[root@master demo]# kubectl exec tiefighter -- curl -s -XPOST deathstar.default.svc.cluster.local/v1/request-landing

Ship landed

应用拒绝策略后:

四、融合istio部署实践

图中的reviews各个版本之间的负载均衡是通过Virtualservice和Destinationrule实现。通过cilium安装istio需要部署融合版的istio,一般只有特定的namespace下的流量会被istio接管,从而可以复用istio已有的CRD及功能。

兼容istio后可以使用的CRD

05

展望

 

  1. CiliumEnvoyConfig 支持的envoy配置有待扩展

  2. 多租户场景:支持NodePort的单节点暴露,即多租户隔离。

  3. 替代istio 控制面的选择有待确定:Istio , SMI.当前方案直接安装istiod

  4. 单个pod多网卡的支持,以及和其他网络插件的兼容

  5. 基于CiliumEnvoyConfig开发一系列更加用户友好的CRD,便于配置

添加评论
谐云 CpjJwWHV
2023年01月31日
555
添加回复
谐云 CpjJwWHV
2023年01月31日
555
添加回复
回复CpjJwWHV:
添加回复
申请合作咨询
您可以通过此表单填写您的合作意向,我们将会尽快与您取得联系!
或拨打电话0571-87607309
*姓名:
*手机:
*邮箱:
备注:
备注:
登录
登录
注册账号 忘记密码
注册
{{ code.btn }}
注册
立即登录 忘记密码?
忘记密码
{{ code.btn }}
确定
立即登录 忘记密码?
立即咨询