作者介绍:简历上没有一个精通的运维工程师。下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。
我们在前面的讲Docker的相关章节的时候,讲过Docker默认创建的的容器都是接入在docker0的网桥上面,而且我们前面Kebernetes安装的时候,无论是Docker版还是Containerd版都并没有单独配置过网桥(甚至Containerd连默认的网桥都没有),只是在安装集群的时候定义容器网路CIDR,那这个容器的的IP地址是从哪里来的呢?
CNI(Container Network Interface)是一个容器网络接口标准,由CoreOS提出,旨在为容器平台提供一种标准的网络配置解决方案。CNI的主要目标是简化容器的网络连接,并使其可插拔,允许容器运行时(如Kubernetes、Docker等)通过插件与各种网络方案集成。
下面是CNI插件的一些基本介绍:
CNI插件是容器网络管理的重要组成部分,它们使得容器化应用的网络管理变得更加灵活和强大。随着容器技术的普及,CNI插件将继续发展,支持更多样化的网络需求。
简单点来就是ip创建由CNI插件来负责,至于这个插件是什么Kubernetes其实不关心。Kubernet根据自己的网络插件配置,去读取对应应该配置,然后使用读取到的配置去获取ip接口。至于这个插件是flanneld 还是Calico,其实kubernetes并不关心,也就相当于变相的对网络进行了解耦。在我刚接触kubernetes的时候,曾经手搓过多台Docker主机实现跨主机通信,然后基于此来部署k8s,当然当时CNI还还未普及。下面两个小节我们将介绍我们常用的2个网络插件。