• 【谐云课堂】Cilium 流量治理功能与部署实践


    本期课堂由谐云研发工程师叶元鹏作为讲师,带来《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 功能总结

    作为CNI,提供了CiliumNetworkPolicy。
    CiliumEnvoyConfig 可以定义负载均衡策略,重写访问路径。
    kafka topic的读写也可以通过CiliumNetWorkPolicy定义。
    ingress与cilium融合需要k8s1.19+,external-ip需要云厂商提供LB能力,否则会一直pending。支持以 RESTFUL API方式从集群外访问 Service。
    支持以 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

    应用拒绝策略后:

    在这里插入图片描述

    04 融合istio部署实践

    在这里插入图片描述

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

    05

    展望

    CiliumEnvoyConfig 支持的envoy配置有待扩展

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

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

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

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

  • 相关阅读:
    matlab如何遍历文件夹及子文件夹下的所有文件
    JAVA面经整理(2)
    智慧配电房监控系统的技术研究
    【产业前沿】树莓集团如何以数字媒体产业园为引擎,加速产业升级?
    linux版:TensorRT安装教程
    Linux 设置快捷命令
    ssm+vue的软考系统(有报告)。Javaee项目,ssm vue前后端分离项目。
    Git 常用命令
    Global View的概念和实现|OneFlow学习笔记
    SpringBoot 核心流程
  • 原文地址:https://blog.csdn.net/HarmonyCloud_/article/details/125552230