一、概述

前面我们部署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的更多相关文章

  1. k8s网络之Calico网络

    k8s网络主题系列: 一.k8s网络之设计与实现 二.k8s网络之Flannel网络 三.k8s网络之Calico网络 简介 Calico 是一种容器之间互通的网络方案.在虚拟化平台中,比如 Open ...

  2. k8s网络之calico学习

    一.知识准备 1.calico主要通过ipip协议与bgp协议来实现通信.前者通过ipip隧道作为通信基础,后者则是纯三层的路由交换 2.bgp协议主要由两种方式:BGP Speaker 全互联模式( ...

  3. k8s网络之Flannel网络

    k8s网络主题系列: 一.k8s网络之设计与实现 二.k8s网络之Flannel网络 三.k8s网络之Calico网络 简介 Flannel是CoreOS团队针对Kubernetes设计的一个网络规划 ...

  4. k8s网络之设计与实现

    k8s网络主题系列: 一.k8s网络之设计与实现 二.k8s网络之Flannel网络 三.k8s网络之Calico网络 K8s网络设计与实现是在学习k8s网络过程中总结的内容.在学习k8s网络各种插件 ...

  5. 【Kubernetes】K8S 网络隔离 方案

    参考资料: K8S-网络隔离参考 OpenContrail is an open source network virtualization platform for the cloud. – Kub ...

  6. ASP.NET Core on K8S深入学习(11)K8S网络知多少

    本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章. 一.Kubernetes网络模型 我们都知道Kubernetes作为容器编排引 ...

  7. k8s网络配置管理

    docker容器的四种网络类型 1.桥接           2.联盟    3.主机    4.无 docker跨节点的容器通信必须通过NAT机制  宿主机上的容器一般都是私网地址 它可以通过宿主机 ...

  8. 19.网络插件calico

    19.网络插件calico 官网: https://docs.projectcalico.org/v3.8/introduction/ calico默认工作在192.168.0.0/16 的网络 ca ...

  9. 【Kubernetes】K8S网络方案--最近在看的

    K8S网络-最近在看的 Create a Minikube cluster - Kubernetes Kubernetes Documentation - Kubernetes Kubernetes ...

随机推荐

  1. BFS总结

    能够用 BFS 解决的问题,一定不要用 DFS 去做! 因为用 Recursion 实现的 DFS 可能造成 StackOverflow! (NonRecursion 的 DFS 一来你不会写,二来面 ...

  2. vue-cli入门

    这也仅仅是入门而已了☺ 自己也在慢慢学习中,不对的地方希望大佬可以多多指教,请不吝赐教,感激不尽. 这章主要是搭建环境: 1.安装node环境 从官网下载并安装node,傻瓜操作,安装完成之后,命令行 ...

  3. cp/tar/用c语言编写程序 实现cp命令的效果

    1.cp (拷贝) 已存在文件路径  要拷贝的文件路径 实现cp命令的代码如下: #include <stdio.h> //因为要在命令中得到两个路径,所以要用到main函数的两个参数 i ...

  4. IMDb、烂番茄、MTC、各种电影行业评分名字整理

    这篇不是技术文章,就是对总是看到但是不知道具体是什么的一些电影名词.评分.来源,学习一下. IMDb 互联网电影资料库(Internet Movie Database,简称IMDb)是一个关于电影演员 ...

  5. 20145232韩文浩 《网络对抗技术》 Web安全基础实践

    问题回答 SQL注入攻击原理?如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,使 ...

  6. React了解

    根据博主  http://www.ruanyifeng.com/blog/2015/03/react.html  的几个Demo(https://github.com/ruanyf/react-dem ...

  7. Quick_sort

    typedef int ElementType; void Quick_sort(ElementType A[], int N) { Quicksort(A, , N-); } void Quicks ...

  8. spring 读取yaml配置文件

    从Spring框架4.1.0增加了对YAML的支持,Spring框架4.1.0 maven POM具有Snakeyaml依赖性  . 您可以在Spring Boot应用中使用两种方式加载YAML: 1 ...

  9. 【高速接口-RapidIO】3、RapidIO串行物理层的包传输过程

    一.引言 前几篇文章已经谈到RapidIO的协议,串行物理层与控制符号. RapidIO协议包括读事务(NREAD),写事务(NWRITE),流写事务(SWRITE),有响应的写事务(NWRITE_R ...

  10. Android开发 - 掌握ConstraintLayout(十一)复杂动画!如此简单!

    介绍 本系列我们已经介绍了ConstraintLayout的基本用法.学习到这里,相信你已经熟悉ConstraintLayout的基本使用了,如果你对它的用法还不了解,建议您先阅读我之前的文章. 使用 ...