Kubernetes
(
k8s
)
CNI
(
annel
)网络模型原理
一、概述
Kubernetes
采用的是基于扁平地址空间的、非
NAT
的网络模型,每个
Pod
有自己唯
一的
IP
地址。网络是由
CNI(container network interface)
插件建立的,而非
K8S
本身。
二、常见的几种
CNI
插件介绍
为了使容器之间的通信更加方便,
Google
和
CoreOS
主导制定了一个容器网络标准
CNI(Conteinre Network Interface)
。
k8s
官网:
https://kubernetes.io/docs/concepts/cluster-
administration/addons/
CNI
可允许
K8S
配置任何
CNI
插件,常见的
CNI
插件有以下几种:
1
)
Flannel
(本章讲解)
Flannel
是由
CoreOS
开发的项目,是容器编排系统中最成熟的网络结构示例之一,
旨在实现更好的容器间和主机间网络。
与其他方案相比,
Flannel
相对容易安装和配置。它被打包为单个二进制文件
anneld
,许多常见的
Kubernetes
集群部署工具和许多
Kubernetes
发行版都可以
默认安装
Flannel
。
Flannel
可以使用
Kubernetes
集群的现有
etcd
集群来使用
API
存储其状态信息,因此不需要专用的数据存储。
详细参考
https://github.com/coreos/annel
官网:
https://coreos.com/annel/docs/latest/
文档:
https://coreos.com/annel/docs/latest/kubernetes.html
2
)
Calico
Calico
是
Kubernetes
生态系统中另一种流行的网络选择,它提供收费的技术支持。
虽然
Flannel
被公认为是最简单的选择,但
Calico
以其性能、灵活性而闻名。
Calico
的功能更为全面,更为复杂。它不仅提供主机和
pod
之间的网络连接,还涉及网络安
全和管理。
Calico CNI
插件在
CNI
框架内封装了
Calico
的功能。
详细参考
https://github.com/projectcalico/cni-plugin
3
)
Romana
Romana
是
Panic Networks
在
2016
年新提出的开源项目,旨在解决
Overlay
方案
给网络带来的开销。虽然目标和
Calico
基本一致,但其采取的方法却截然不同,具体
项目的发展有待观察。
相关文档
评论