当前位置: 首页 > 科技观察

Kubernetes网络插件Calico完整运维指南

时间:2023-03-13 04:55:32 科技观察

适用范围本文档测试范围:概述Calico是一个开源网络和网络安全解决方案,适用于容器、虚拟机和基于主机的原生工作负载。Calico支持广泛的平台,包括Kubernetes、docker、OpenStack和裸机服务。Calico后端支持多种网络模式。BGP模式:将节点作为虚拟路由器,通过BGP路由协议实现集群内容器之间的网络访问。IPIP方式:在原IP包中封装一个新的IP包,将新IP包中的源地址IP和目的地址IP修改为对端主机IP。cross-subnet:calico-ipip模式和calico-bgp模式都有相应的限制。对于一些主机跨子网,网络设备无法使用BGP的场景,可以使用跨子网模式,实现同一子网内的机器使用calico-BGP模式,跨子网机器使用calico-ipip模式。Calico切换到BGP模式。部署完成后默认使用calico-ipip模式。通过节点上的路由就可以知道。到其他节点的路由通过tunl0网卡出去,改成BGP网络方式。修改系统工程中的calico-nodedaemonset。将CALICO_IPV4POOL_IPIP改为off,新增环境变量FELIX_IPINIPENABLED为false,修改完成后重启节点,恢复后查看主机路由。与ipip最大的区别在于到其他节点的路由,从Tunnel0到网卡。Calico切换到跨子网模式。calico-ipip模式和calico-bgp模式都有相应的限制。对于一些主机跨子网,无法让网络设备使用BGP的场景,可以使用跨子网模式实现同子网机器。使用calico-BGP模式,跨子网机器使用calico-ipip模式。部署集群网络,选择calico网络插件。默认部署是calico的ip-in-ip模式。检查主机网卡,会发现多了一个tunl0网卡。这是建立ip隧道的网卡。到其他主机的路由是通过tunl0网卡。出去切换到cross-subnet模式kubectleditipPool/default-ipv4-ippool将ipipMode改为crossSubnet在UI中删除calico-node的POD重建重启查看calico网络。可以看到同子网主机的出口是bgp,不同子网主机使用tunl0网卡,使用ipip方式创建应用测试跨主机网络,在不同的主机上互相ping通hosts查看跨主机网络是否正常。配置路由反射器并安装calicoctl。有几种方法可以在单台主机上安装calicoctl。在单一主机上安装二进制文件。在上面的continer上安装continer作为k8spod。经验:binary安装在集群中的一个worker节点(比如RR),calicoctl会检测bird/felix的运行状态。只有部分命令可以在非caliconode节点上运行,不能运行caliconode相关的命令。Calico通过配置calicoctl来控制。通常建议配置curl-O-Lhttps://github.com/projectcalico/calicoctl/releases/download/v3.13.3/calicoctl配置可执行权限chmod+xcalicoctlcopy/usr/bin/directorycpcalicoctl/usr/bin/configurecalicoctl连接Kubernetes集群exportCALICO_DATASTORE_TYPE=kubernetesexportCALICO_KUBECONFIG=~/.kube/configcalicoctlnodestatuscaliconode-to-nodemesh默认情况下,calico采用node-to-nodemesh模式,为了防止BGP路由环路,BGP协议规定在一个AS(自治系统)内,IBGP路由器之间只能传递一跳路由信息,所以在一个AS内,IBGP路由器需要建立全互连才能学习到路由信息但是,当一个AS的规模非常大时,维护这种全互连的对等关系会消耗大量的网络和CPU资源。因此,在这种情况下,有必要建立一个路由反射器来减少之间的对等关系的数量。路由反射器作用介绍早期的calico版本提供了专用的路由反射器镜像,新版本的calico节点内置了路由反射器功能。RouteReflector可以是以下角色:集群内的node节点,集群外运行的caliconode等支持RouteReflector的软件或设备。这里以一个集群内部的node节点为例:closenode-to-nodemeshcat<