0

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

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

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

  1. 一座cni0桥。
  2. 一个flannel.x界面。
  3. 在主机和 pod 网络之间路由的 iptables 条目。

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

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

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

4

1 回答 1

0

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

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

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

在这里您可以找到有关 CNI 的详细文档。

什么是 CNI?

CNI(容器网络接口)是一个 云原生计算基金会 项目,由一个规范和库组成,用于编写插件以在 Linux 容器中配置网络接口,以及许多受支持的插件。CNI 只关心容器的网络连接以及在容器被删除时移除分配的资源。由于这个重点,CNI 得到了广泛的支持,并且规范易于实现。

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

在这里,您可以找到有关 Kubernetes 如何与 CNI 交互的文档。

于 2018-11-07T14:13:27.390 回答