首页 > 其他分享 >cilium 组件

cilium 组件

时间:2024-05-07 09:01:08浏览次数:22  
标签:Kubernetes eBPF Cilium API 集群 组件 cilium

cilium 组件架构图

Cilium

Agent

Cilium agent ( cilium-agent) 在集群中的每个节点上运行。在较高级别上,代理通过 Kubernetes 或 API 接受配置,这些配置描述了网络、服务负载平衡、网络策略以及可观测性和监控要求。
Cilium agent 侦听来自 Kubernetes 等编排系统的事件,以了解容器或工作负载何时启动和停止。它管理 Linux 内核用来控制这些容器进出的所有网络访问的 eBPF 程序。

Client (CLI) 

Cilium CLI 客户端 ( cilium) 是与 Cilium agent 起安装的命令行工具。它与在同一节点上运行的 Cilium agent 的 REST API 进行交互。CLI 允许检查本地代理的状态和状况。它还提供了直接访问 eBPF 映射以验证其状态的工具。

Operator

Cilium Operator 负责管理集群中的职责,逻辑上应该为整个集群处理一次,而不是为集群中的每个节点处理一次。Cilium 运营商并不处于任何转发或网络策略决策的关键路径中。如果Operator暂时不可用,集群通常会继续运行。但是,根据配置的不同,Operator可用性故障可能会导致:
1. 如果运营商需要分配新的IP 地址,则 IP 地址管理 (IPAM) 会出现延迟,从而导致新工作负载的调度出现延迟。

2. 未能更新 kvstore 心跳密钥将导致代理声明 kvstore 不健康并重新启动。

CNI Plugin

当在节点上调度或终止 pod 时,Kubernetes 会调用 CNI 插件 (cilium-cni)。它与节点的 Cilium API 交互,触发必要的数据路径配置,为 pod 提供网络、负载平衡和网络策略。

Hubble

Server

Hubble 服务器在每个节点上运行,并从 Cilium 检索基于 eBPF 的可观测性。它被嵌入到 Cilium agent中以实现高性能和低开销。它提供 gRPC 服务来检索流和 Prometheus 指标。

Relay

Relay ( hubble-relay) 是一个独立组件,它了解所有正在运行的 Hubble 服务器,并通过连接到各自的 gRPC API 并提供代表集群中所有服务器的 API 来提供集群范围内的可观测性。

Client (CLI)

Hubble CLI (hubble) 是一个命令行工具,能够连接到 hubble-relay 的 gRPC API 或本地服务器来检索流事件。

Graphical UI (GUI)

图形用户界面 ( hubble-ui) 利用基于relay的可观测性来提供图形服务依赖关系和连接图。

eBPF

eBPF 是一个Linux 内核字节码解释器,最初是为了过滤网络数据包而引入的,例如tcpdump 和socket 过滤器。此后,它已通过附加数据结构(例如哈希表和数组)以及附加操作进行了扩展,以支持数据包修改、转发、封装等。内核内验证器可确保 eBPF 程序安全运行,并且 JIT 编译器可转换字节码CPU 架构特定指令以提高本机执行效率。eBPF 程序可以在内核中的各个挂钩点运行,例如针对传入和传出数据包。
Cilium 能够探测 Linux 内核的可用功能,并在检测到更新的功能时自动使用它们。

Data Store

Cilium 需要数据存储来在代理之间传播状态。它支持以下数据存储:

Kubernetes CRDs (Default)

存储任何数据和传播状态的默认选择是使用 Kubernetes 自定义资源定义 (CRD)。CRD 由 Kubernetes 为集群组件提供,以通过 Kubernetes 资源表示配置和状态。

Key-Value Store

状态存储和传播的所有要求都可以通过 Cilium 默认配置中配置的 Kubernetes CRD 来满足。可以选择将键值存储用作优化,以提高集群的可扩展性,因为通过直接使用键值存储,更改通知和存储要求会更加高效。
目前支持的键值存储有:etcd

参考文档

https://docs.cilium.io/en/stable/overview/component-overview/

标签:Kubernetes,eBPF,Cilium,API,集群,组件,cilium
From: https://www.cnblogs.com/wangguishe/p/18175527

相关文章

  • vue 组件通信
    组件通信1.父传子在全局组件中自定义属性:<Child:myname="qname"></Child>在组件中获取:{{myname}}<divid="app"><h1>组件使用-父传子-自定义属性</h1><Child:myname="qname"></Child></div><script>......
  • ASP.NET Core Razor Pages 使用 视图(View) 组件
    参考文章地址:为什么要在ASP.NETCore中使用视图组件(telerik.com)为什么使用视图组件而不是分部视图?最大的原因是,在Razor页面中插入分部视图时,与调用View关联的所有ViewData都会自动与分部视图关联。这意味着分部视图在一个Razor页面上的行为可能与在另一个页面上的行......
  • 40.Vue UI组件简单整理
    以下版本:ElementPlus组件库首先基于Vue3的PC端开源UI组件库安装依赖[email protected]中导入并挂载模块importElementPlusfrom'element-plus'import'element-plus/dist/index.css'app.use(ElementPlus)app.mount('#app')注意注意这......
  • TinyVue 3.15.0 正式发布,推出全新的 Charts 图表组件底座,功能更强、图表更丰富!
    你好,我是Kagol。我们非常高兴地宣布,2024年4月8日,TinyVue发布了v3.15.0......
  • k8s核心组件详解和分层架构
    k8s核心组件master中的核心组件api-server(接口服务,基于rest风格开放k8s接口的服务)kube-controller-manager(管理各个类型的控制器,针对k8s中的各种资源进行管理)cloud-controller-manager(云控制管理器,第三方云平台提供的控制器,api对接管理功能)kube-scheduler(调度器,负责将po......
  • CyberRT_概念组件以及基本流程
    CyberRT两大功能任务调度数据通信基本组件componentnodechannelreader/writersevice/clientTaskroutine通信1.通信的方式:01.intras-process02.sharedMemory 03.socket--fastRTPSDDS也是采用发布/订阅机制进行网络通讯通过抽象出DDS接口,让RO......
  • 蚂蚁面试:Springcloud核心组件的底层原理,你知道多少?
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • Vue入门到关门之组件
    一、组件1、什么是组件在Vue.js中,组件是构建用户界面的可重用和独立的模块。每个Vue组件都封装了自己的模板、逻辑和样式,使得代码可以更加模块化、可维护性更高。通过组件化,你可以将界面拆分成独立的、可复用的部分,每个部分都有自己的功能和样式,这样可以更容易地管理复杂的界面,......
  • 如何使用 Prometheus 监控 Kubernetes 集群的核心组件
    使用Prometheus监控Kubernetes集群的核心组件涉及几个关键步骤。以下是一个基本的流程:1.部署PrometheusOperatorPrometheusOperator是一个Kubernetes自定义资源控制器,用于管理和操作Prometheus集群。通过Helmchart或其他方式在Kubernetes集群中部署Prometheu......
  • 06-混入-自定义插件-插槽-本地存储-vuex组件通信-页面跳转
    混入mixin在Vue中,混入(mixin)是一种可以在多个组件中重复使用的对象。它允许您将组件中的一些选项提取出来,然后在多个组件中进行重复使用。混入可以包含组件中的任何选项,例如数据、计算属性、方法等。使用步骤在src文件夹下新建一个文件夹,比如mixin,然后再这个文件夹下面新建一......