Skip to content

Commit f47a992

Browse files
author
wangyazhou
committed
docs(calico): 添加 Calico架构文档
- 新增 Calico 架构文档,介绍 Calico 的主要组件和工作原理- 文档包括路由配置组件 Felix、路由广播组件 BGP Speaker 和安全策略组件 Network Policy 的详细说明 - 配置了图片路径和显示设置,确保文档中的插图能够正确显示
1 parent 5b1dd04 commit f47a992

File tree

5 files changed

+122
-0
lines changed

5 files changed

+122
-0
lines changed

calico/calico架构.adoc

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
:toc:
2+
3+
// 保证所有的目录层级都可以正常显示图片
4+
:path: calico/
5+
:imagesdir: ../image/
6+
7+
// 只有book调用的时候才会走到这里
8+
ifdef::rootpath[]
9+
:imagesdir: {rootpath}{path}{imagesdir}
10+
endif::rootpath[]
11+
12+
== Calico架构
13+
14+
15+
=== 路由配置组件 Felix
16+
17+
18+
如果只有两台机器,每台机器只有两个容器,而且保持不变。我手动配置一下,倒也没啥问题。但是如果容器不断地创建、删除,节点不断地加入、退出,情况就会变得非常复杂
19+
20+
image::calico/image-2025-04-19-17-10-36-534.png[]
21+
22+
就像图中,有三台物理机,两两之间都需要配置路由,每台物理机上对外的路由就有两条。如果有六台物理机,则每台物理机上对外的路由就有五条。新加入一个节点,需要通知每一台物理机添加一条路由。
23+
24+
这还是在物理机之间,一台物理机上,每创建一个容器,也需要多配置一条指向这个容器的路由。如此复杂,肯定不能手动配置,需要每台物理机上有一个 agent,当创建和删除容器的时候,自动做这件事情。这个 agent 在 Calico 中称为 Felix。
25+
26+
27+
=== 路由广播组件 BGP Speaker
28+
29+
当 Felix 配置了路由之后,接下来的问题就是,如何将路由信息,也即将“如何到达我这个节点,访问我这个节点上的容器”这些信息,广播出去。
30+
31+
能想起来吗?这其实就是路由协议啊!路由协议就是将“我能到哪里,如何能到我”的信息广播给全网传出去,从而客户端可以一跳一跳地访问目标地址的。路由协议有很多种,Calico 使用的是 BGP 协议。
32+
33+
在 Calico 中,每个 Node 上运行一个软件 BIRD,作为 BGP 的客户端,或者叫作 BGPSpeaker,将“如何到达我这个 Node,访问我这个 Node 上的容器”的路由信息广播出去。所有 Node 上的 BGP Speaker 都互相建立连接,就形成了全互连的情况,这样每当路由有所变化的时候,所有节点就都能够收到了
34+
35+
36+
=== 安全策略组件 Network Policy
37+
38+
Calico 中还实现了灵活配置网络策略 Network Policy,可以灵活配置两个容器通或者不通。这个怎么实现呢?
39+
40+
image::calico/image-2025-04-19-17-16-08-387.png[]
41+
42+
虚拟机中的安全组,是用 iptables 实现的。Calico 中也是用 iptables 实现的。这个图里的内容是 iptables 在内核处理网络包的过程中可以嵌入的处理点。Calico 也是在这些点上设置相应的规则。
43+
44+
image::calico/image-2025-04-19-17-16-55-005.png[]
45+
46+
47+
48+
49+
50+
51+
52+
53+
54+
55+
56+
57+
58+
59+
60+
61+
62+
63+
64+
65+
66+
67+
68+
69+
70+
71+
72+
73+
74+
677 KB
Loading
438 KB
Loading
518 KB
Loading

prometheus/kube_prometheus.adoc

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
2+
:toc:
3+
4+
// 保证所有的目录层级都可以正常显示图片
5+
:path: prometheus/
6+
:imagesdir: ../image/
7+
8+
// 只有book调用的时候才会走到这里
9+
ifdef::rootpath[]
10+
:imagesdir: {rootpath}{path}{imagesdir}
11+
endif::rootpath[]
12+
13+
// 用于文件跳转
14+
ifndef::rootpath[]
15+
:rootpath: ../
16+
endif::rootpath[]
17+
18+
== kube-prometheus
19+
20+
21+
22+
23+
24+
25+
26+
27+
28+
29+
30+
31+
32+
=== prometheus特性列表
33+
34+
==== pod停止之后还是能采集到数据
35+
36+
这是因为prometheus为了能够聚合数据,会对原先的数据进行聚合,默认会进行5分钟的聚合,也就是小时5分钟之后还有虚假数据
37+
38+
如果需要修改可以通过以下参数进行修改:
39+
40+
[source, bash]
41+
----
42+
--query.lookback-delta
43+
----
44+
45+
https://github.com/prometheus/prometheus/discussions/11825[discussions:11825]
46+
47+
48+

0 commit comments

Comments
 (0)