K8s --calico网络插件

官网:https://docs.projectcalico.org/getting-started/kubernetes/self-managed-onprem/onpremises
 

calico简介:

flannel实现的是网络通信,calico的特性是在pod之间的隔离。

通过BGP路由,但大规模端点的拓扑计算和收敛往往需要一定的时间和计算资源。

纯三层的转发,中间没有任何的NAT和overlay,转发效率最好。

Calico 仅依赖三层路由可达。Calico 较少的依赖性使它能适配所有 VM、Container、白盒或者混合环境场景。

calico网络插件

IPIP工作模式:适用于互相访问的pod不在同一个网段中,跨网段访问的场景。

BGP工作模式:适用于互相访问的pod在同一个网段,适用于大型网络。

calico网络架构

Felix:监听ECTD中心的存储获取事件,用户创建pod后,Felix负责将其网卡、IP、MAC都设置好,然后在内核的路由表里面写一条,注明这个IP应该到这张网卡。同样如果用户制定了隔离策略,Felix同样会将该策略创建到ACL中,以实现隔离。 

BIRD:一个标准的路由程序,它会从内核里面获取哪一些IP的路由发生了变化,然后通过标准BGP的路由协议扩散到整个其他的宿主机上,让外界都知道这个IP在这里,路由的时候到这里来。

网络初始化插件之前使用的是flannel K8s --calico网络插件_第1张图片

如何在集群内部布置访问策略想达到一种哪些服务可以访问 哪些服务不可以访问的效果 网络策略通过网络插件来实现 默认情况flannel 不支持网络插件 需要更换网络插件 calico网络插件支持网络策略

 安装calico

官网下载部署文件K8s --calico网络插件_第2张图片K8s --calico网络插件_第3张图片

 创建calico目录 将镜像放至calico 目录中K8s --calico网络插件_第4张图片

K8s --calico网络插件_第5张图片K8s --calico网络插件_第6张图片K8s --calico网络插件_第7张图片 镜像打标签上传至私有仓库calico目录中

K8s --calico网络插件_第8张图片K8s --calico网络插件_第9张图片K8s --calico网络插件_第10张图片K8s --calico网络插件_第11张图片K8s --calico网络插件_第12张图片 K8s --calico网络插件_第13张图片K8s --calico网络插件_第14张图片K8s --calico网络插件_第15张图片K8s --calico网络插件_第16张图片 

删除flannel组件K8s --calico网络插件_第17张图片

删除flannel组件默认配置文件 每个节点都需要删除

K8s --calico网络插件_第18张图片K8s --calico网络插件_第19张图片K8s --calico网络插件_第20张图片缺少flannel网络插件 重启访问不到

K8s --calico网络插件_第21张图片K8s --calico网络插件_第22张图片K8s --calico网络插件_第23张图片查看网络插件  K8s --calico网络插件_第24张图片

K8s --calico网络插件_第25张图片

K8s --calico网络插件_第26张图片

查看ip发生了变化

K8s --calico网络插件_第27张图片集群内部访问svc地址 集群内部测试成功 K8s --calico网络插件_第28张图片

集群外部如何访问

删除ingress外部访问报错 K8s --calico网络插件_第29张图片

K8s --calico网络插件_第30张图片K8s --calico网络插件_第31张图片 

 NetworkPolicy策略模型:控制某个namespace下的pod的网络出入站规则

K8s --calico网络插件_第32张图片

此策略针只针对具备app=nginx标签的pod有效  pod-selector(pod选择器)

K8s --calico网络插件_第33张图片K8s --calico网络插件_第34张图片

限制对nginx服务的访问,只让那些有标签access: true的pod访问它

K8s --calico网络插件_第35张图片K8s --calico网络插件_第36张图片

拥有access=true标签的才可以访问,并且实现负载均衡 K8s --calico网络插件_第37张图片

 在重新开启的终端操作

K8s --calico网络插件_第38张图片K8s --calico网络插件_第39张图片

查看当前没有namespace  创建一个namespaceK8s --calico网络插件_第40张图片K8s --calico网络插件_第41张图片

访问不了 因为标签不一样  具备角色name=test的namespace在所有的pod 的可以访问

修改标签K8s --calico网络插件_第42张图片

标签修改成功 可以访问 并且实现负载均衡 K8s --calico网络插件_第43张图片

你可能感兴趣的:(网络,linux,java)