k8s网络之calico
一、概述
前面我们部署calico由于集群规模不是很大,使用的是calico的bgp模式的node-to-node-mesh全节点互联,这种模式在小规模集群里面还可以用,3.4.0版本的calico支持到100多个节点。
但是随着集群规模的扩大,bgp的mesh会变得很混乱,因为node-to-node-mesh模式要求所有的node节点都要互联。所以大规模集群使用bgp route reflector,集中式的路由信息分发,当Calico BGP客户端将路由从其FIB通告到Route Reflector时,Route Reflector会将这些路由通告给部署集群中的其他节点。
二、部署
在官网下载最新的部署文件:https://docs.projectcalico.org/v3.4/getting-started/kubernetes/installation/calico
curl \
https://docs.projectcalico.org/v3.4/getting-started/kubernetes/installation/hosted/calico.yaml \
-O
需要修改几个地方具体参考:https://www.cnblogs.com/cuishuai/p/9897006.html
calico默认使用的是node-to-node-mesh,我们需要全局禁用这种模式,需要提前部署calicoctl。
参考:https://www.cnblogs.com/cuishuai/p/9897006.html、https://docs.projectcalico.org/v3.4/usage/calicoctl/install
参考:https://docs.projectcalico.org/v3.4/usage/configuration/bgp
1、禁用node-to-node-mesh
#cat off-node-mesh.yaml
apiVersion: projectcalico.org/v3
kind: BGPConfiguration
metadata:
name: default
spec:
logSeverityScreen: Info
nodeToNodeMeshEnabled: false
asNumber:
calicoctl apply -f off-node-mesh.yaml
2、配置集群内路由反射器
# calicoctl get node
NAME
ku13-
ku13-
ku13-
ku13-
ku13-4是我们的kube-gateway,参考https://www.cnblogs.com/cuishuai/p/10310698.html
我们将这个节点作为bgp route reflector,建议选2-3个节点作为route reflector,这里我们就用这一个节点,前面已经知道这个节点上只部署了calico-node、kube-proxy,并且禁止调度。
1) 修改节点资源:
将节点设置
spec.bgp.routeReflectorClusterID
为非空集群ID,例如224.0.0.1
添加一个标签,指示该节点是路由反射器
# calicoctl get node ku13- --export -o yaml > node.yaml
ku13-4是要选择的节点名称,可以替换成任意的节点,这里我们选择kube-gateway节点。
修改为如下内容:
#cat node.yaml
apiVersion: projectcalico.org/v3
kind: Node
metadata:
creationTimestamp: null
labels:
i-am-a-route-reflector: "true"
name: ku13-
spec:
bgp:
ipv4Address: 10.42.11.1/
routeReflectorClusterID: 224.0.0.1
orchRefs:
- nodeName: ku13-
orchestrator: k8s
使配置生效:
calicoctl apply -f node.yaml
2)配置BGPPeer资源,告诉其他Calico节点与路由反射器节点对等:
#cat bgp-calico.yaml
apiVersion: projectcalico.org/v3
kind: BGPPeer
metadata:
name: peer-to-rrs
spec:
nodeSelector: !has(i-am-a-route-reflector)
peerSelector: has(i-am-a-route-reflector)
calicoctl create -f bgp-calico.yaml
3)如果选择多个节点为route reflector,还需要配置BGPPeer资源,告诉路由反射器节点互相对等:
#cat bgp-reflector.yaml
apiVersion: projectcalico.org/v3
kind: BGPPeer
metadata:
name: rr-mesh
spec:
nodeSelector: has(i-am-a-route-reflector)
peerSelector: has(i-am-a-route-reflector)
calicoctl create -f bgp-reflector.yaml
https://www.cnblogs.com/cuishuai/p/9897006.html
k8s网络之calico的更多相关文章
- k8s网络之Calico网络
k8s网络主题系列: 一.k8s网络之设计与实现 二.k8s网络之Flannel网络 三.k8s网络之Calico网络 简介 Calico 是一种容器之间互通的网络方案.在虚拟化平台中,比如 Open ...
- k8s网络之calico学习
一.知识准备 1.calico主要通过ipip协议与bgp协议来实现通信.前者通过ipip隧道作为通信基础,后者则是纯三层的路由交换 2.bgp协议主要由两种方式:BGP Speaker 全互联模式( ...
- k8s网络之Flannel网络
k8s网络主题系列: 一.k8s网络之设计与实现 二.k8s网络之Flannel网络 三.k8s网络之Calico网络 简介 Flannel是CoreOS团队针对Kubernetes设计的一个网络规划 ...
- k8s网络之设计与实现
k8s网络主题系列: 一.k8s网络之设计与实现 二.k8s网络之Flannel网络 三.k8s网络之Calico网络 K8s网络设计与实现是在学习k8s网络过程中总结的内容.在学习k8s网络各种插件 ...
- 【Kubernetes】K8S 网络隔离 方案
参考资料: K8S-网络隔离参考 OpenContrail is an open source network virtualization platform for the cloud. – Kub ...
- ASP.NET Core on K8S深入学习(11)K8S网络知多少
本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章. 一.Kubernetes网络模型 我们都知道Kubernetes作为容器编排引 ...
- k8s网络配置管理
docker容器的四种网络类型 1.桥接 2.联盟 3.主机 4.无 docker跨节点的容器通信必须通过NAT机制 宿主机上的容器一般都是私网地址 它可以通过宿主机 ...
- 19.网络插件calico
19.网络插件calico 官网: https://docs.projectcalico.org/v3.8/introduction/ calico默认工作在192.168.0.0/16 的网络 ca ...
- 【Kubernetes】K8S网络方案--最近在看的
K8S网络-最近在看的 Create a Minikube cluster - Kubernetes Kubernetes Documentation - Kubernetes Kubernetes ...
随机推荐
- HDU 6377 度度熊看球赛 (计数DP)
度度熊看球赛 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- mysql官方的测试数据库employees超30万的数据,安装方法介绍
安装方法 1.mysql必须开启环境变量 2.shift右键官方数据库打开在命令行运行此窗口 3.进入cmd以后输入mysql -uroot -proot 回车 4.输入 source employ ...
- 当padding/margin的取值形式为百分比时。。。。。
一个基础却又容易混淆的css知识点:当margin/padding取形式为百分比的值时,无论是left/right,还是top/bottom,都是以父元素的width为参照物的!也许你会说,left/ ...
- git的认识2
我的GitHub 地址:https://github.com/lvjiaze130 唯一的感觉就是厉害了,还有看了一些个教学视频发现他们在git bush上打的东西我竟然都看不懂,是英文吗?太不好懂了 ...
- QEMU KVM libvirt 手册(1): 安装
安装 对虚拟化的支持通常在BIOS中是禁掉的,必须开启才可以. 对于Intel CPU,我们可以通过下面的命令查看是否支持虚拟化. # grep "vmx" /proc/cpuin ...
- 背水一战 Windows 10 (104) - 通知(Toast): 纯文本 toast, 短时 toast, 长时 toast, 图文 toast
[源码下载] 背水一战 Windows 10 (104) - 通知(Toast): 纯文本 toast, 短时 toast, 长时 toast, 图文 toast 作者:webabcd 介绍背水一战 ...
- Android插件化的兼容性(上):Android O的适配
首先声明,<Android插件化开发指南>这本书所介绍的Android底层是基于Android6.0(API level 23)的,而本书介绍的各种插件化解决方案,以及配套的70多个例子, ...
- 字符编码那点事:快速理解ASCII、Unicode、GBK和UTF-8
原作者:阮一峰(ruanyifeng.com),现重新整理发布,感谢原作者的无私分享. 1.引言 今天中午,我突然想搞清楚 Unicode 和 UTF-8 之间的关系,就开始查资料. 这个问题比我想象 ...
- NAT详解:基本原理、穿越技术(P2P打洞)、端口老化等
这是一篇介绍NAT技术要点的精华文章,来自华3通信官方资料库,文中对NAT技术原理的介绍很全面也很权威,对网络应用的应用层开发人员而言有很高的参考价值. 学习交流 移动端即时通讯学习交流: 21589 ...
- 使用Java类加载SpringBoot、SpringCloud配置文件
我们都知道平常在使用SpringBoot和SpringCloud的时候,如果需要加载一两个配置文件的话我们通常使用@Value("${属性名称}")注解去加载.但是如果配置文件属性 ...