Calico相关知识
Calico相关知识
1、基本概念
-
Calico 是纯三层的 SDN 实现,它基于 BPG 协议和 Linux 自己的路由转发机制,不依赖特殊硬件,没有使用 NAT 或 Tunnel 等技术。能够方便的部署在物理服务器, 虚拟机(如 OpenStack)或者容器环境下。同时它自带的基于 Iptables 的 ACL 管理组件非常灵活,能够满足比较复杂的安全隔离需求。
-
除了为 OpenStack VMs 提供网络之外,Calico 还为 Docker 环境的容器提供网络。每个容器有自己的 IP 和细粒度的安全策略。此外,Calico 可以在没有封装的情况下也可以部署,支持 IPv4 和 IPv6。
2、优势:
-
calico的好处是endpoints(接入到calico网络中的网卡称为endpoint)组成的网络是单纯的三层网络,报文的流向完全通过路由规则控制,没有overlay等额外开销。
-
calico是一个比较有趣的虚拟网络解决方案,完全利用路由规则实现动态组网,通过BGP协议通告路由。
-
endpoint可以漂移,并且实现了acl。
3、缺点:
-
路由的数目与容器数目相同,非常容易超过路由器、三层交换、甚至node的处理能力,从而限制了整个网络的扩张。
-
每个node上会设置大量(海量)的iptables规则、路由,运维、排障难度大。
-
原理决定了它不可能支持VPC,容器只能从calico设置的网段中获取ip。
-
目前的实现没有流量控制的功能,会出现少数容器抢占node多数带宽的情况。
-
网络规模受到BGP网络规模的限制。
4、最为核心组件Felix
-
负责设置路由表和 ACL 规则等,以便为该主机上的 endpoints 资源正常运行提供所需
的网络连接。同时它还负责提供有关网络健康状况的数据(例如,报告配置其主机时发生的错误和问题),这些数据会被写入 etcd,以使其对网络中的其他组件和操作人员可见。所以:Prometheus-Operator监控Calico的核心就是监控Felix
5、Prometheus 采集 Felix 指标
-
Prometheus-Operator 在部署时会创建 Prometheus、PodMonitor、ServiceMonitor、AlertManager 和 PrometheusRule 这 5 个 CRD 资源对象,然后会一直监控并维持这 5 个资源对象的状态。
-
-Prometheus 这个资源对象就是对 Prometheus Server 的抽象。
-
-PodMonitor 和 ServiceMonitor 就是 exporter 的各种抽象,是用来提供专门提供指标数据接口的工具。
-
-Prometheus 就是通过 PodMonitor 和 ServiceMonitor 提供的指标数据接口去 pull 数据的。
-
- -ServiceMonitor 要求被监控的服务必须有对应的 Service
-
- -PodMonitor 虽然不需要应用创建相应的 Service,但必须在 Pod 中指定指标的端口和名称,因此需要先修改 DaemonSet calico-node 的配置,指定端口和名称
-
-
- -PodMonitor 的 name 最终会反应到 Prometheus 的配置中,作为 job_name。
-
-
-
- -podMetricsEndpoints.port 需要和被监控的 Pod 中的 ports.name 相同。
-
-
-
- -namespaceSelector.matchNames 需要和被监控的 Pod 所在的 namespace 相同。
-
-
-
- -selector.matchLabels 的标签必须和被监控的 Pod 中能唯一标明身份的标签对应
-
6、可视化监控指标
-
采集完指标之后,就可以通过 Grafana 的仪表盘来展示监控指标
-
Grafana 相关知识
-请点击-