我一直在使用 kubeadm 设置 Kubernets,并且使用 Flannel 设置 pod 网络。设置基本上可以工作,但我遇到了各种问题(和错误),现在我试图更好地了解网络设置过程中涉及的不同步骤(例如 CNI 和法兰绒)。
从最终用户/管理员的角度来看,我只是将--pod-network-cidr
一些网络参数传递给kubeadm
,然后我使用kubectl
. 然后 Kubernetes 将在我的每个节点上启动一个 flannel pod。假设一切正常,flannel 应该使用 Kubernetes 的容器网络接口 (CNI) 来设置 pod 网络。
作为这个过程的结果,我应该得到一个 pod 网络,其中包括以下内容:
- 一座
cni0
桥。 - 一个
flannel.x
界面。 - 在主机和 pod 网络之间路由的 iptables 条目。
设置中似乎涉及以下文件和二进制文件:
kubectl
读取 CNI 配置,例如/etc/cni/net.d/10-flannel.conflist
并调用配置文件中描述的 CNI 插件。/var/lib/cni
不知何故,正在创建一个似乎包含网络设置配置文件的文件夹。- 一个 CNI 插件如
/opt/cni/bin/flannel
运行,我还不明白它的作用。
我在此列表中缺少什么以及 (2.) 如何适合这些步骤。get 是如何/var/lib/cni
创建的,哪个程序对此负责?