Cilium学习:安装部署
文章目录
系统限制
1.系统软件版本
- Linux kernel >= 4.9.17
- clang+LLVM >= 10.0
- iproute2 with eBPF templating patches
- Key-Value store etcd >= 3.1.0 or consul >= 0.6.4
上述限制,后三点只在本地部署Cilium时有要求。
245 以上的 systemd 版本,会导致Pod到节点之外IPV4流量异常,官方文档提供了以下解决方案:
|
|
参考ISSUE:https://github.com/cilium/cilium/issues/10645
由于部分用户手工编译的内核可能关闭某些eBPF功能,影响cilium功能的使用,可以参考以下页面了解Cilium需要内核限制以及版本要求:
内核配置:https://docs.cilium.io/en/stable/operations/system_requirements/#linux-kernel
高级功能的内核版本要求:https://docs.cilium.io/en/stable/operations/system_requirements/#required-kernel-versions-for-advanced-features
2.防火墙限制
参考:https://docs.cilium.io/en/stable/operations/system_requirements/#firewall-rules
Helm安装
Cilium 部署完成后,包括以下组件:
- Cilium Agent:通过DS方式部署在所有节点,并通过监听编排服务的event管理Linux内核中的eBPF程序。Cilium Agent 会动态生成BPF代码,并使用LLVM进行编译,最后使用eBPF loader将代码加载到内核。
- Cilium Cli:每个Agent容器内都集成了Cilium工具,该工具用于调试或者获取当前节点上Cilium以及BPF的一些信息。(PS:直接将二进制文件CP到宿主机也可以运行)
- Operator:虽然Operator故障不会影响已有网络的可用性,但是会导致IPAM不可用,以及Agent重启。
- CNI Plugin
- Hubble
- Server:嵌入到Cilium Agent服务中,用来收集流量信息
- Relay:Hubble Server的中继服务,通过gRPC连接每个Hubble Server
- Hubble Cli
- Graphical UI
1.部署Cilium
使用Helm安装cilium版本,以下命令cilium完全替换kube-proxy:
|
|
部署完成后,cilium-operator会重启所有非Host网络的POD,如果需要避免主机上的POD被重启,可以添加到指定节点 node.cilium.io/agent-not-ready
Cilium 除了Helm安装之外还提供了命令行工具cilium-cli。
部署完成后可以使用cilium-cli执行以下命令验证集群联通性:
|
|
2.部署Hubble
|
|
hubble 同样提供了命令行工具hubble,通过命令行工具可以范围hubble的API
|
|
3. 部署DSR模式
部署 DSR 模式时需要关闭 tunnel,参考部署方式如下:
|
|
文章作者 yoaz
上次更新 2022-09-29
许可协议 MIT