本期课堂由谐云研发工程师叶元鹏作为讲师,带来《Cilium 流量治理功能概述及部署实践》分享,围绕Cilium进行了详细介绍,并对其组件、安装方式及路径功能等进行了深入讲解。
01
Cilium 概述
Cilium是一个具备API感知的网络和安全的开源软件,用于透明保护使用Docker和Kubernetes等Linux容器管理平台部署的应用程序服务之间的网络连接。Cilium的基础是一种称为BPF的新Linux内核技术,该技术可在Linux自身内部动态插入强大的安全可见性和控制逻辑。
由于BPF在Linux内核中运行,因此可以应用和更新Cilium安全策略,而无需更改应用程序代码或容器配置。与传统的sidecar代理模式相比,不需要在应用容器边上单独部署一个流量代理的容器。可以基于Linux内核收集网络包信息,利用eBPF程序编写包过滤的规则,减少Linux内核网络栈开销。
02
组件及安装方式
包含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
03
官方 mesh demo 功能总结
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
应用拒绝策略后:
04
融合istio部署实践
图中的reviews各个版本之间的负载均衡是通过Virtualservice和Destinationrule实现。通过cilium安装istio需要部署融合版的istio,一般只有特定的namespace下的流量会被istio接管,从而可以复用istio已有的CRD及功能。
兼容istio后可以使用的CRD
05
展望
留言与评论(共有 0 条评论) “” |