使用Flannel时Kubernetes CNI的步骤

时间:2018-11-06 17:04:25

标签: kubernetes kubectl flannel cni

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

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

作为此过程的结果,我应该获得一个包含以下内容的Pod网络:

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

以下文件和二进制文件似乎与设置有关:

  1. kubectl读取诸如/etc/cni/net.d/10-flannel.conflist之类的CNI配置并调用配置文件中描述的CNI插件。
  2. 正在以某种方式创建文件夹/var/lib/cni,其中似乎包含网络设置的配置文件。
  3. 运行了/opt/cni/bin/flannel之类的CNI插件,但我还不知道它的作用。

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

1 个答案:

答案 0 :(得分:0)

我从CNI:的代码中看到

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

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

Here,您可以找到有关CNI的详细文档。

什么是CNI?

CNI(容器网络接口)是一个Cloud Native Computing Foundation项目,由一个规范和库(用于编写用于在Linux容器中配置网络接口的插件)以及许多受支持的插件组成。 CNI仅涉及容器的网络连接以及删除容器时删除分配的资源。由于这种关注,CNI拥有广泛的支持,并且该规范易于实现。

诸如Calico,Flannel之类的所有项目均以CNI为基础。这就是为什么他们称其为CNI插件

Here,您可以找到有关kubernetes如何与CNI交互的文档。