• 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软件包自动创建出来的,这里面包含了很多的网络命令工具。

  • 相关阅读:
    为什么原生IP可以降低Google play账号关联风险?企业号解决8.3/10.3账号关联问题?
    网工内推 | 金融业,网络管理岗,CCIE优先,最高30k
    SAP 电商云 Spartacus UI SiteContextUrlParams 的实现明细介绍
    LeetCode 958. 二叉树的完全性检验
    matplotlib图表多曲线多纵轴绘制工具方法
    html5 头部标签
    .net OleDbParameter转SugarParameter
    web - Tomcat服务器
    nodejs+vue大学生招聘网站应聘系统设计与实现5b14b
    c++新特性 语言运行期强化
  • 原文地址:https://blog.csdn.net/woshaguayi/article/details/133299405