• K8S-CNI


    CNI的设计思想即为:Kubernetes在启动Pod的pause容器之后,直接调用CNI网络插件,从而实现为Pod内部应用容器月在的Network Namespace配置符合预期的网络信息。

    这里面需要特别关注两个方面:Container必须有自己的网络命名空间的环境,也就是endpoint地址。Container所在的网段必须能够注册网络地址信息。
    ip地址的管理网络通信的管理
    对容器网络的设置和操作都通过插件 ( Plugin)CNI插件包括两种类型: CNIPlugin和IPAM(IP Address进行具体实现,Management) Plugin。

    CNI Plugin负责为容器配置网络资源,IPAM Pugin负责对容器的IP地址进行分配和管理。IPAMplugin作为CNI plugin的一部分,与CNI Plugin一起工作。

    在 Kubernetes中,CNI对于容器网络的设置主要是以CNI Plugin插件的方式来为容器配置网络资源,它主要有三种模式
    MainPlugin
         - 用来创建具体的网络设备的二进制文件
        - 比如bridge、ipvlan、 vlan、 host-deviceIPAM Plugin
    IPAM 就是 IP Address Management
        负责对容器的IP地址进行分配和管理,作为CNI Plugin的一部分,与CNI PIugin一起工作

    Meta Plugin
    - 由CNI社区维护的内部插件功能模块,常见的插件功能模块有以下几种
    flannel 专门为Flannel项目提供的插件
    tuning 通过sysctl调整网络设备参数的二进制文件
    portmap 通过iptables配置端口映射的二进制文件
    bandwidth 使用 Token Bucket Eilter (TBE)来进行限流的二进制文件firewall 通过iptables或者firewalled添加规则控制容器的进出流量

    CNI目前被谁管理?
    在 Kubernetes 1.24 之前,CNI 插件也可以由 kubelet 使用命令行参数 cni-bin-dir 和 network-plugin 管理。而在Kubernetes 1.24 移除了这些命令行参数, CNI 的管理不再是 kubelet 的工作。而变成下层的容器引擎需要做的事情了,比如cri-dockerd服务的启动文件。

    查看服务文件 /etc/systemd/system]cri-docker.serviceExecStart=/usr/local/bin/cri-dockerd --network-plugin=cnidir=/opt/cni/bin ...
    --cni-conf-dir=/etc/cni/net.d.-cni-bin-
    注意:/opt/cni/bin 目录是部署kubernetes的时候,安装的cni-tools软件包自动创建出来的,这里面包含了很多的网络命令工具。

  • 相关阅读:
    fastdfs常用命令
    机器学习基础之《回归与聚类算法(1)—线性回归》
    shardingsphere分库分表示例(逻辑表,真实表,绑定表,广播表,单表)
    移动设备软件开发-广播机制
    @Valid和@Validated注解校验以及异常处理
    对比学习 ——simsiam 代码解析。
    Nginx上传模块nginx-upload-module安装和配置
    【一、定制搭建-Arm平台的QT交叉编译环境】
    写代码有这20个好习惯,可以减少90%非业务的bug
    【LeetCode刷题日志】160.相交链表
  • 原文地址:https://blog.csdn.net/woshaguayi/article/details/133299405