我一直在使用kubeadm设置Kubernets,并且我已经使用Flannel设置了pod网络。设置基本上可以正常工作,但是我遇到了各种各样的问题(和错误),现在我试图更好地理解网络设置过程中涉及的不同步骤(例如CNI和法兰绒)。
从最终用户/管理员的角度来看,我只需将带有网络参数的--pod-network-cidr
传递给kubeadm
,然后再使用kubectl
为法兰绒应用pod配置。然后,Kubernetes将在我的每个节点上启动一个法兰绒吊舱。假设一切正常,法兰绒应使用Kubernetes的容器网络接口(CNI)设置Pod网络。
作为此过程的结果,我应该获得一个包含以下内容的Pod网络:
cni0
桥。flannel.x
界面。以下文件和二进制文件似乎与设置有关:
kubectl
读取诸如/etc/cni/net.d/10-flannel.conflist
之类的CNI配置并调用配置文件中描述的CNI插件。/var/lib/cni
,其中似乎包含网络设置的配置文件。/opt/cni/bin/flannel
之类的CNI插件,但我还不知道它的作用。此列表上我缺少什么,以及(2.)如何适合这些步骤。 /var/lib/cni
如何创建以及由哪个程序负责?
答案 0 :(得分:0)
我从CNI:的代码中看到
var (
CacheDir = "/var/lib/cni"
)
此文件夹用作CNI的缓存目录,看起来像是由CNI插件创建的。
Here,您可以找到有关CNI的详细文档。
CNI(容器网络接口)是一个Cloud Native Computing Foundation项目,由一个规范和库(用于编写用于在Linux容器中配置网络接口的插件)以及许多受支持的插件组成。 CNI仅涉及容器的网络连接以及删除容器时删除分配的资源。由于这种关注,CNI拥有广泛的支持,并且该规范易于实现。
诸如Calico,Flannel之类的所有项目均以CNI为基础。这就是为什么他们称其为CNI插件
Here,您可以找到有关kubernetes如何与CNI交互的文档。