【容器云】Calico 组件架构

简介: 【容器云】Calico 组件架构

Calico 组件

下图显示了 Kubernetes 的必需和可选 Calico 组件,具有网络和网络策略的本地部署。

Calico 组件

  • Calico API server
  • Felix
  • BIRD
  • confd
  • Dikastes
  • CNI plugin
  • Datastore plugin
  • IPAM plugin
  • kube-controllers
  • Typha
  • calicoctl

云编排器的插件

  • Plugins for cloud orchestrators

Calico API 服务器

主要任务:让您直接使用 kubectl 管理 Calico 资源。

菲利克斯(Felix)

主要任务:对路由和 ACL 以及主机上所需的任何其他内容进行编程,以便为该主机上的端点提供所需的连接。在托管端点的每台机器上运行。作为代理守护程序运行。费利克斯资源。

根据具体的编排器环境,Felix 负责:

接口管理

将有关接口的信息编程到内核中,以便内核可以正确处理来自该端点的流量。特别是,它确保主机使用主机的 MAC 响应来自每个工作负载的 ARP 请求,并为其管理的接口启用 IP 转发。它还监视接口以确保在适当的时间应用编程。

Route programming (路由编程)

将路由到其主机上的端点的程序路由到 Linux 内核 FIB(转发信息库)中。这确保了以到达主机的那些端点为目的地的数据包被相应地转发。

ACL 编程

将 ACL 编程到 Linux 内核中,以确保只能在端点之间发送有效流量,并且端点不能绕过 Calico 安全措施。

状态报告

提供网络健康数据。特别是,它会在配置其主机时报告错误和问题。此数据被写入数据存储,因此对网络的其他组件和操作员可见。

注意:calico/node 可以在仅策略模式下运行,其中 Felix 在没有 BIRD 和 confd 的情况下运行。这提供了无需在主机之间分配路由的策略管理,并用于托管云提供商等部署。您可以通过在启动节点之前设置环境变量 CALICO_NETWORKING_BACKEND=none 来启用此模式。

BIRD

主要任务:从 Felix 获取路由并分发给网络上的 BGP 对等体,用于主机间路由。在托管 Felix 代理的每个节点上运行。开源的互联网路由守护进程。鸟。

BGP客户端负责:

路线分发

当 Felix 将路由插入 Linux 内核 FIB 时,BGP 客户端会将它们分发到部署中的其他节点。这确保了部署的有效流量路由。

BGP 路由反射器配置

BGP 路由反射器通常用于大型部署而不是标准 BGP 客户端。BGP 路由反射器充当连接 BGP 客户端的中心点。 (标准 BGP 要求每个 BGP 客户端都连接到网状拓扑中的每个其他 BGP 客户端,这很难维护。)

为了冗余,您可以无缝部署多个 BGP 路由反射器。BGP 路由反射器仅参与网络控制:没有端点数据通过它们。当 Calico BGP 客户端将其 FIB 中的路由通告给路由反射器时,路由反射器会将这些路由通告给部署中的其他节点。

 

confd

主要任务:监控 Calico 数据存储以了解 BGP 配置和全局默认值(例如 AS 编号、日志记录级别和 IPAM 信息)的更改。开源、轻量级的配置管理工具。

Confd 根据数据存储中数据的更新动态生成 BIRD 配置文件。当配置文件发生变化时,confd 会触发 BIRD 加载新文件。配置confd和confd项目。

Dikastes

主要任务:为 Istio 服务网格实施网络策略。作为 Istio Envoy 的 sidecar 代理在集群上运行。

(可选)Calico 在 Linux 内核(使用 iptables,L3-L4)和 L3-L7 使用名为 Dikastes 的 Envoy sidecar 代理对工作负载实施网络策略,并对请求进行加密身份验证。使用多个实施点基于多个标准建立远程端点的身份。即使工作负载 pod 受到威胁,并且 Envoy 代理被绕过,主机 Linux 内核实施也会保护您的工作负载。Dikastes 和 Istio 文档。

CNI 插件

主要任务:为 Kubernetes 集群提供 Calico 网络。

将此 API 提供给 Kubernetes 的 Calico 二进制文件称为 CNI 插件,必须安装在 Kubernetes 集群中的每个节点上。Calico CNI 插件允许您将 Calico 网络用于任何使用 CNI 网络规范的编排器。通过标准的 CNI 配置机制和 Calico CNI 插件进行配置。

数据存储插件(Datastore plugin)

主要任务:通过减少每个节点对数据存储的影响来扩大规模。它是 Calico CNI 插件之一。

Kubernetes API 数据存储 (kdd)

将 Kubernetes API 数据存储 (kdd) 与 Calico 一起使用的优点是:

  • 管理更简单,因为它不需要额外的数据存储
  • 使用 Kubernetes RBAC 控制对 Calico 资源的访问
  • 使用 Kubernetes 审计日志生成 Calico 资源更改的审计日志

etcd

etcd 是一个一致的、高可用性的分布式键值存储,它为 Calico 网络提供数据存储,并用于组件之间的通信。支持 etcd 仅保护非集群主机(从 Calico v3.1 开始)。为了完整起见,etcd 的优点是:

  • 让您在非 Kubernetes 平台上运行 Calico
  • 分离 Kubernetes 和 Calico 资源之间的关注点,例如允许您独立扩展数据存储
  • 让您运行包含多个 Kubernetes 集群的 Calico 集群,例如,具有 Calico 主机保护的裸机服务器与 Kubernetes 集群互通;或多个 Kubernetes 集群。

etcd 管理员指南

IPAM 插件

主要任务:使用 Calico 的 IP 池资源来控制 IP 地址如何分配给集群内的 Pod。它是大多数 Calico 安装使用的默认插件。它是 Calico CNI 插件之一。

kube-控制器(kube-controllers)

主要任务:监控 Kubernetes API 并根据集群状态执行操作。kube 控制器。

tigera/kube-controllers 容器包括以下控制器:

  • 策略控制器
  • 命名空间控制器
  • 服务帐户控制器
  • 工作负载端点控制器
  • 节点控制器

 

香蒲(Typha)

主要任务:通过减少每个节点对数据存储的影响来扩大规模。在数据存储和 Felix 实例之间作为守护进程运行。默认安装,但未配置。Typha 描述和 Typha 组件。

Typha 代表其所有客户端(如 Felix 和 confd)维护单个数据存储连接。它缓存数据存储状态并删除重复事件,以便可以将它们分散到许多侦听器。因为一个 Typha 实例可以支持数百个 Felix 实例,它大大减少了数据存储的负载。并且由于 Typha 可以过滤掉与 Felix 无关的更新,因此也降低了 Felix 的 CPU 使用率。在大规模(超过 100 个节点)Kubernetes 集群中,这是必不可少的,因为 API 服务器生成的更新数量会随着节点数量的增加而增加。

花椰菜(calicoctl)

主要任务:创建、读取、更新和删除 Calico 对象的命令行界面。calicoctl 命令行可在任何可以通过网络访问 Calico 数据存储(作为二进制文件或容器)的主机上使用。需要单独安装。花椰菜

云编排器的插件

主要任务:将用于管理网络的协调器 API 转换为 Calico 数据模型和数据存储。

对于云提供商,Calico 为每个主要的云编排平台都有一个单独的插件。这允许 Calico 与编排器紧密绑定,因此用户可以使用他们的编排工具管理 Calico 网络。需要时,编排器插件会从 Calico 网络向编排器提供反馈。例如,提供有关 Felix 活跃度的信息,并在网络设置失败时将特定端点标记为失败。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
Web App开发 前端开发 JavaScript
前端新利器:CSS容器查询——让组件真正“自适应
前端新利器:CSS容器查询——让组件真正“自适应
239 83
|
1月前
|
消息中间件 Java Kafka
Java 事件驱动架构设计实战与 Kafka 生态系统组件实操全流程指南
本指南详解Java事件驱动架构与Kafka生态实操,涵盖环境搭建、事件模型定义、生产者与消费者实现、事件测试及高级特性,助你快速构建高可扩展分布式系统。
129 7
|
6月前
|
前端开发 API 开发者
harmonyOS基础- 快速弄懂HarmonyOS ArkTs基础组件、布局容器(前端视角篇)
本文由黑臂麒麟(6年前端经验)撰写,介绍ArkTS开发中的常用基础组件与布局组件。基础组件包括Text、Image、Button等,支持样式设置如字体颜色、大小和加粗等,并可通过Resource资源引用统一管理样式。布局组件涵盖Column、Row、List、Grid和Tabs等,支持灵活的主轴与交叉轴对齐方式、分割线设置及滚动事件监听。同时,Tabs组件可实现自定义样式与页签切换功能。内容结合代码示例,适合初学者快速上手ArkTS开发。参考华为开发者联盟官网基础课程。
425 75
harmonyOS基础- 快速弄懂HarmonyOS ArkTs基础组件、布局容器(前端视角篇)
|
9月前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
10月前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
10月前
|
Kubernetes Cloud Native 持续交付
容器化、Kubernetes与微服务架构的融合
容器化、Kubernetes与微服务架构的融合
334 82
|
7月前
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。
|
10月前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
495 60
|
7月前
|
监控 Cloud Native Java
基于阿里云容器服务(ACK)的微服务架构设计与实践
本文介绍如何利用阿里云容器服务Kubernetes版(ACK)构建高可用、可扩展的微服务架构。通过电商平台案例,展示基于Java(Spring Boot)、Docker、Nacos等技术的开发、容器化、部署流程,涵盖服务注册、API网关、监控日志及性能优化实践,帮助企业实现云原生转型。
|
10月前
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
544 9
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生

热门文章

最新文章