K8S Calico网络插件

优质资源分享

学习路线指引(点击解锁) 知识定位 人群定位
Python实战微信订餐小程序 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
Python量化交易实战 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
目录
  • 0.前言
  • 1.Calico概述
    • 1.1.Calico组件
    • 1.2.Calico网络实现
    • 1.3.了解Calico对CIDR子网的划分(blockSize)
    • 1.4.Calico网络策略
  • 2.安装Calico
    • 2.1.使用calico.yaml清单文件安装Calico
    • 2.2.使用Tigera Calico Operator安装Calico
  • 3.Calico清单详解-calico.yaml(使用calico.yaml清单文件安装Calico安装方式必读)
    • 3.1.配置PodIP范围(PodCIDR)
    • 3.2.配置IPIP(默认)
    • 3.3.切换IPIP为VXLAN
    • 3.4.其他配置项
  • 4.Calico清单详解-custom-resources.yaml(使用Tigera Calico Operator安装Calico安装方式必读)
  • 5.完全卸载Calico网络插件

回到顶部# 0.前言

参考文档:https://github.com/containernetworking/cni
Pod网络插件,为了实现Pod网络而需要的插件、组件。由于Kubernetes通过开放的CNI接口来允许插件的接入,所以它又称之为CNI网络插件。
为了解决跨主机容器间通信问题,市面上存在很多解决方案,为了兼容和规范这些解决方案,Kubernetes仅设计了网络模型,却将Pod网络的实现交给了CNI网络插件,并允许网络插件通过标准的CNI(Container Network Interface,容器网络接口)连接到容器管理系统。
CNI网络插件主要解决的就是容器跨主机通信问题而存在的,并使跨主机间运行的Pod位于同一个网络平面,其大致解决步骤通常有两步:分配设置自定义容器网络(PodIP在集群中全局唯一性)和实现容器网络通信(处理方法通常有路由、覆盖网络{Vxlan、IPIP}等等)。
每个Pod都会创建一个名叫"pause"的根容器,其他运行的业务容器都是复制该容器的网络,这个容器就是Kubernetes为了自定义网络等特殊功能而存在的。
CNI网络插件分为以下四种:

  • MAIN,主要的,创建接口,主要网络的实现。如:bridge、ipvlan、loopback、macvlan、ptp、vlan、host-device。
  • Windows,特用于Windows的MAIN插件。如:win-bridge、win-overlay。
  • IPAM,仅提供IP地址分配功能。如:dhcp、host-local、static。
  • META,其他插件,通过调用第三方插件来实现网络功能。如:tuning、portmap、bandwidth、sbr、firewall、flannel。

光单独靠一种CNI网络插件是无法实现完整的Pod网络通信和更高级的网络策略功能的,第三方组织可以灵活的组合这些CNI插件实现基本Pod网络功能和更高级功能,所以市面上流行出来很多解决方案。
在现今,比较常用的流行的Pod网络解决方案有Flannel和Calico(支持网络策略功能)、Canal(由Flannel实现网络通信+Calico提供网络策略)。

回到顶部# 1.Calico概述

参考文档:https://projectcalico.docs.tigera.io/
Calico是一款广泛采用、久经考验的开源网络和网络安全解决方案,适用于Kubernetes、虚拟机和裸机工作负载。与Flannel对比,Calico除了支持基本网络功能的实现之外,它还支持全套Kubernetes网络策略功能,以及在其之上扩展网络策略。

1.1.Calico组件

Calico主要由以下组件组成:

1.1.1.CNI Plugin

CNI网络插件,Calico通过CNI网络插件与kubelet关联,从而实现Pod网络。

1.1.2.Calico Node

Calico节点代理是运行在每个节点上的代理程序,负责管理节点路由信息、策略规则和创建Calico虚拟网络设备。
Calico Node主要由以下子模块程序组成:

  • Felix,Calico代理程序。运行在每个节点上的守护进程,它主要负责管理节点上网络接口、为节点创建路由信息和ACL规则、以及报告当前节点网络的健康状态给控制器等工作。
  • BIRD-BGP客户端,BIRD是一个项目的简称,全称为BIRD Internet Routing Daemon,BIRD是一个类UNIX系统下旨在开发一个功能齐全的IP路由守护进程,它是一个路由软件,可以实现多种路由协议,如BGP、OSPF、RIP等。在Calico中,BIRD是一个BGP客户端,用于使用BGP协议广播给其他主机动态的学习路由规则。更多了解BIRD可参考:https://bird.network.cz/。
  • BIRD-Route Reflector(可扩展的组件),BGP客户端在每个节点上运行,其随着节点数量越来越多,一个BGP客户端需要连接更多数量的其他BGP客户端,其网络连接的数量非常多且网络会变得复杂。在节点之外,允许将BIRD程序配置成"Route Reflector"路由反射器工作方式,BGP客户端可以直接连接到"Route Reflector"路由反射器,而不是很多数量的其他BGP客户端,从而减少网络连接的数量,以提高BGP网络的性能。
    K8S Calico网络插件_第1张图片

1.1.3.Calico Controller

Calico网络策略控制器。允许创建"NetworkPolicy"资源对象,并根据资源对象里面对网络策略定义,在对应节点主机上创建针对于Pod流出或流入流量的IPtables规则。

1.1.4.Calico Typha(可选的扩展组件)

Typha是Calico的一个扩展组件,用于Calico通过Typha直接与Etcd通信,而不是通过kube-apiserver。通常当K8S的规模超过50个节点的时候推荐启用它,以降低kube-apiserver的负载。每个Pod/calico-typha可承载100~200个Calico节点的连接请求,最多不要超过200个。

1.2.Calico网络实现

Calico支持两种类型网络工作模式(后端机制):
如果物理主机在同一2层网络中,则建议采用使用BGP动态路由通信方式;如果物理主机是跨子网通信的话,可能由于到达目标主机的跳数太多导致性能下降,所以建议使用覆盖网络模式。

1.2.1.动态路由模式(dynamic routing)

采用BGP动态路由协议自动学习来自其他AS自治系统上的路由条目,即其他节点主机上的路由条目。
类似于Flannel的Host-GW模式,不过它没有不能跨子网的限制。
想要更多

你可能感兴趣的:(android,网络,flask,python,计算机)