【问题标题】:Steps of Kubernetes CNI when using FlannelKubernetes CNI 使用 Flannel 的步骤
【发布时间】:2019-04-10 03:00:41
【问题描述】:

我一直在使用 kubeadm 设置 Kubernets,并且我使用 Flannel 设置了 pod 网络。设置基本上可以工作,但我一直遇到各种问题(和错误),现在我试图更好地了解网络设置过程中涉及的不同步骤(例如 CNI 和 flannel)。

从最终用户/管理员的角度来看,我只是将带有一些网络参数的 --pod-network-cidr 传递给 kubeadm,然后我使用 kubectl 为 flannel 应用 pod 配置。然后 Kubernetes 将在我的每个节点上启动一个 flannel pod。假设一切正常,flannel 应该使用 Kubernetes 的容器网络接口 (CNI) 来设置 pod 网络。

作为这个过程的结果,我应该得到一个 pod 网络,其中包括以下内容:

  1. cni0 网桥。
  2. flannel.x 接口。
  3. iptables 条目在主机和 pod 网络之间进行路由。

设置中似乎涉及以下文件和二进制文件:

  1. kubectl 读取 CNI 配置,例如 /etc/cni/net.d/10-flannel.conflist,并调用配置文件中描述的 CNI 插件。
  2. 不知何故,正在创建一个文件夹 /var/lib/cni,其中似乎包含网络设置的配置文件。
  3. 一个 CNI 插件如/opt/cni/bin/flannel 运行,我还不明白它的作用。

我在此列表中缺少什么以及 (2.) 如何适合这些步骤。 /var/lib/cni 是如何创建的,由哪个程序负责?

【问题讨论】:

    标签: kubernetes kubectl flannel cni


    【解决方案1】:

    正如我从CNI:的代码中看到的那样

    var  (
       CacheDir  =  "/var/lib/cni"
    )
    

    此文件夹用作 CNI 的缓存目录,看起来像是由 CNI 插件创建的。

    Here你可以找到关于 CNI 的详细文档。

    什么是 CNI?

    CNI (Container Network Interface) 是一个Cloud Native Computing Foundation 项目,包含用于编写插件以在 Linux 容器中配置网络接口的规范和库,以及许多受支持的插件。 CNI 只关心容器的网络连接以及在容器被删除时移除分配的资源。由于这个重点,CNI 得到了广泛的支持,并且规范易于实现。

    Calico、Flannel 等所有项目都使用 CNI 作为基础。这就是为什么他们称之为 CNI-plugins

    Here 你可以找到关于 Kubernetes 如何与 CNI 交互的文档。

    【讨论】:

      猜你喜欢
      • 2020-05-22
      • 2019-05-22
      • 2018-02-26
      • 2017-09-25
      • 2017-10-14
      • 2016-03-25
      • 2020-05-24
      • 2019-04-06
      • 2020-10-06
      相关资源
      最近更新 更多