当前位置: 首页 > news >正文

CNI 网络流量 4.3 Calico felix

文章目录


felix 太重要了,单独一文搞懂它

Felix是一个守护程序,在每个 endpoints 的节点上运行。Felix 负责编制路由和 ACL 规则等,以便为该主机上的 endpoints 资源正常运行提供所需的网络连接
主要实现一下工作

  • 管理网络接口,Felix 将有关接口的一些信息写到内核,以使内核能够正确处理该 endpoint 发出的流量。 特别是,它将确保主机正确响应来自每个工作负载的ARP请求,并将为其管理的接口启用IP转发支持。它还监视网络接口的出现和消失,以便确保针对这些接口的编程得到了正确的应用。
  • 编写路由,Felix负责将到其主机上endpoints的路由编写到Linux内核FIB(转发信息库)中。 这可以确保那些发往目标主机的endpoints的数据包被正确地转发。
  • 编写 ACLs,Felix还负责将ACLs编程到Linux内核中。 这些ACLs用于确保只能在endpoints之间发送有效的网络流量,并确保endpoints无法绕过Calico的安全措施。
  • 报告状态,Felix 负责提供有关网络健康状况的数据。 特别是,它将报告配置其主机时发生的错误和问题。 该数据会被写入etcd,以使其对网络中的其他组件和操作才可见
  1. Felix 启动配置 /etc/calico/felix.cfg
[global]
MetadataAddr = None
LogFilePath = None
LogSeverityFile = None
LogSeveritySys = None
  1. 从 env 加载配置比较重要的有
DatastoreType: Kubernetes
  1. 开启 http 服务,上报健康状态供 liveness and readiness 查询 /bin/calico-node -felix-live

  2. 解析 IP Pool 资源,集群启动时创建了 IPPool 资源

kubectl get IPPool -oyaml
apiVersion: v1
items:
- apiVersion: crd.projectcalico.org/v1kind: IPPoolmetadata:name: default-ipv4-ippool...spec:allowedUses:- Workload- TunnelblockSize: 26cidr: 10.244.0.0/16ipipMode: Always                          // ipipMode, 且 ippool 10.244.0.0/16natOutgoing: truenodeSelector: all()vxlanMode: Never
kind: List
metadata:resourceVersion: ""selfLink: ""
  1. 如果配置了 calico-typha,则启动相应 client,在节点数比较多的情况下,Felix 可通过 Typha 直接和 ETCD 进行数据交互

  2. Dataplane

    dpDriver, dpDriverCmd = dp.StartDataplaneDriver(configParams.Copy(), // Copy to avoid concurrent access.healthAggregator,configChangedRestartCallback,fatalErrorCallback,k8sClientSet)
  • 通过 kube-ipvs0 判断是否是 ipvs,如果 BPF 开启的话,ipvs 改为 false。
  • 如果 BPF 开启的话,确认 BPF 程序 mark bits 在允许范围内 IptablesMarkMask:0xffff0000
  • 获取到可用 mark 范围 iptables mark bits acceptMark=0x10000 endpointMark=0xfff00000 endpointMarkNonCali=0x100000 passMark=0x20000 scratch0Mark=0x40000 scratch1Mark=0x80000
    即:ACCEPT 标记 0x10000,endpoint 标记为 0xfff00000 等
  • 循环保证 IPtables 的配置
        intDP := intdataplane.NewIntDataplaneDriver(dpConfig)intDP.Start()

具体配置分析可见 https://blog.csdn.net/zhonglinzhang/article/details/97630093

http://www.lryc.cn/news/17613.html

相关文章:

  • 超声波风速风向传感器的通讯协议
  • JVM笔记(8)—— 直接内存
  • Unity性能优化:如何优化Drawcall
  • 类与对象(this 关键字、构造器)
  • [NOIP2002 普及组] 过河卒
  • redis事务和锁机制
  • Java实例——线程
  • 云计算学习课程——越来越重要的云安全
  • Android 高性能列表:RecyclerView + DiffUtil
  • 为什么派生类的构造函数必须在初始化列表中调用基类的构造函数
  • 2023年2月初某企业网络工程师面试题【建议收藏】
  • 分布式下(sso)单点登录
  • PMP真的有那么厉害?你需要考PMP吗?
  • 高通平台开发系列讲解(WIFI篇)802.11 基本概念
  • 扬帆优配|反弹涨超70%,昨收三连板,稀土行业或迎大事件
  • 华为OD机试 - 工号不够用了(Java) | 机试题+算法思路+考点+代码解析 【2023】
  • Python学习-----lambda式匿名函数
  • 华为OD机试真题Python实现【求解连续数列】真题+解题思路+代码(20222023)
  • 每日学术速递2.22
  • postgresql 数据库 主从切换 测试
  • 干旱预测方法总结及基于人工神经网络的干旱预测案例分析(MATLAB全代码)
  • 一篇文章弄清楚啥是数组和集合
  • 计算机网络(五):三次握手和四次挥手,TCP,UDP,TIME-WAIT,CLOSE-WAIT,拥塞避免,
  • 【数据结构】二叉树(C语言实现)
  • 高级信息系统项目管理(高项 软考)原创论文——成本管理(2)
  • 代码签名即将迎来一波新关注
  • 黑盒渗透盲打lampiao
  • 笔记:VLAN及交换机处理详细教程(Tagged, UnTagged and Native VLANS Tutorial)
  • 在字节跳动,造赛博古籍
  • Android 12.0设置默认Launcher安装一款Launcher默认Launcher无效的解决方案