kubernetes(k8s)安装BGP模式calico网络支持IPV4和IPV6

BGP是互联网上一个核心的去中心化自治路由协议,它通过维护IP路由表或“前缀”表来实现自治系统AS之间的可达性,属于矢量路由协议。不过,考虑到并非所有的网络都能支持BGP,以及Calico控制平面的设计要求物理网络必须是二层网络,以确保 vRouter间均直接可达,路由不能够将物理设备当作下一跳等原因,为了支持三层网络,Calico还推出了IP-in-IP叠加的模型,它也使用Overlay的方式来传输数据。IPIP的包头非常小,而且也是内置在内核中,因此理论上它的速度要比VxLAN快一点 ,但安全性更差。Calico 3.x的默认配置使用的是IPIP类型的传输方案而非BGP。

Calico的系统架构如图所示:

Calico 主要由 Felix、etcd、BGP client 以及 BGP Route Reflector 组成

  1. Felix,Calico Agent,跑在每台需要运行 Workload 的节点上,主要负责配置路由及 ACLs 等信息来确保 Endpoint 的连通状态;

  2. etcd,分布式键值存储,主要负责网络元数据一致性,确保 Calico 网络状态的准确性;

  3. BGP Client(BIRD), 主要负责把 Felix 写入 Kernel 的路由信息分发到当前 Calico 网络,确保 Workload 间的通信的有效性;

  4. BGP Route Reflector(BIRD),大规模部署时使用,摒弃所有节点互联的 mesh 模式,通过一个或者多个 BGP Route Reflector 来完成集中式的路由分发。

  5. calico/calico-ipam,主要用作 Kubernetes 的 CNI 插件

配置NetworkManager防止干扰calico


[root@k8s-master01 ~]# vim /etc/NetworkManager/conf.d/calico.conf
[root@k8s-master01 ~]# cat /etc/NetworkManager/conf.d/calico.conf
[keyfile]
unmanaged-devices=interface-name:cali*;interface-name:tunl*
[root@k8s-master01 ~]#

下载官方最新calico配置文件


[root@k8s-master01 ~]# curl https://projectcalico.docs.tigera.io/manifests/calico-typha.yaml -o calico.yaml
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 228k 100 228k 0 0 83974 0 0:00:02 0:00:02 --:--:-- 83974
[root@k8s-master01 ~]#

修改calico配置得以支持IPV6


[root@k8s-master01 ~]# cp calico.yaml calico-ipv6.yaml
[root@k8s-master01 ~]# vim calico-ipv6.yaml
# calico-config ConfigMap处
"ipam": {
"type": "calico-ipam",
"assign_ipv4": "true",
"assign_ipv6": "true"
}, - name: CLUSTER_TYPE
value: "k8s,bgp" - name: IP
value: "autodetect" - name: IP6
value: "autodetect" - name: CALICO_IPV4POOL_CIDR
value: "172.16.0.0/16" - name: CALICO_IPV6POOL_CIDR
value: "fc00::/48" - name: FELIX_IPV6SUPPORT
value: "true"

修改calico配置得以支持IPV4


[root@k8s-master01 ~]# grep "IPV4POOL_CIDR" calico.yaml  -A 1
- name: CALICO_IPV4POOL_CIDR
value: "172.16.0.0/12"
[root@k8s-master01 ~]# kubectl apply -f calico.yaml

查看POD


[root@k8s-master01 ~]# kubectl  get pod -A -w
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-56cdb7c587-l8h5k 1/1 Running 0 66s
kube-system calico-node-b2mpq 1/1 Running 0 66s
kube-system calico-node-jlk89 1/1 Running 0 66s
kube-system calico-node-nqdc4 1/1 Running 0 66s
kube-system calico-node-pjrcn 1/1 Running 0 66s
kube-system calico-node-w4gfm 1/1 Running 0 66s
kube-system calico-typha-6775694657-vk4ds 1/1 Running 0 66s

关于

https://www.oiox.cn/

https://www.oiox.cn/index.php/start-page.html

CSDN、GitHub、知乎、开源中国、思否、掘金、简书、华为云、阿里云、腾讯云、哔哩哔哩、今日头条、新浪微博、个人博客

全网可搜《小陈运维》

文章主要发布于微信公众号:《Linux运维交流社区》

kubernetes(k8s)安装BGP模式calico网络支持IPV4和IPV6的更多相关文章

  1. Kubernetes(K8s) 安装(使用kubeadm安装Kubernetes集群)

    背景: 由于工作发生了一些变动,很长时间没有写博客了. 概述: 这篇文章是为了介绍使用kubeadm安装Kubernetes集群(可以用于生产级别).使用了Centos 7系统. 一.Centos7 ...

  2. [Linux]Linux下开启snmp支持IPV4和IPV6

    SNMP简介 简单网络管理协议(SNMP),由一组网络管理的标准组成,包含一个应用层协议(application layer protocol).数据库模型(database schema)和一组资源 ...

  3. 网络类型IPv4和IPv6什么意思?区别?

    在windows 7以上系统中,在设置本地IP地址的时候经常会看到同事含有IPV4协议项与IPV6协议项,并不同于以往windows xp系统中仅有TCP/IP协议项,不少朋友都觉得比较奇怪,询问编辑 ...

  4. c/c++11封装UDP,支持ipv4和ipv6,支持接收和发送

    更新日志 11/06/2021 1.增加IPV6 2.ipv6通过windows10初步测试 3.ipv6包括: 接收和发送 5.增加错误代码接口 6.本机IPv6截图 7.编译通过截图 8.ipv6 ...

  5. 修改SS配置文件使其同时支持IPV4和IPV6网络

    将/etc/shadowsocks-libev/config.json文件中的 "server":"0.0.0.0", 修改为: "server&qu ...

  6. [转载]Linux网络编程IPv4和IPv6的inet_addr、inet_aton、inet_pton等函数小结

    转载:http://blog.csdn.net/ithomer/article/details/6100734 知识背景: 210.25.132.181属于IP地址的ASCII表示法,也就是字符串形式 ...

  7. Linux网络编程IPv4和IPv6的inet_addr、inet_aton、inet_pton等函数小结

    知识背景: 210.25.132.181属于IP地址的ASCII表示法,也就是字符串形式.英语叫做IPv4 numbers-and-dots notation. 如果把210.25.132.181转换 ...

  8. Linux网络编程IPv4和IPv6的inet_addr、inet_aton、inet_pton等函数小结(转)

    原文:http://blog.csdn.net/ithomer/article/details/6100734 知识背景: 210.25.132.181属于IP地址的ASCII表示法,也就是字符串形式 ...

  9. oracle11G 同时支持IPV4和IPV6配置

    1.修改listener.ora文件 LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ...

  10. 网络支持IPV6地址测试校验与思考

    概述 大背景:随着移动端的快速扩张,互联网的规模越来越广阔,早于2011年耗尽的IPV4地址越来越无法满足互联网的网络地址需求,IPV6地址推广进入快车道.实际情况:近期公司应上级部门邀请对公司的主域 ...

随机推荐

  1. 树莓派启动后自动连接wifi

    安装好系统后我们先使用 网线进行连接 使用ssh 工具连接 cd /etc/wpa_supplicant/ wpa_passphrase "网络名称" "密码" ...

  2. Python 使用json存储数据

    一.前言 很多程序都要求用户输入某种信息,如让用户存储游戏首选项或提供要可视化的数据.不管专注的是什么,程序都把用户提供的信息存储在列表和字典等数据结构中.用户关闭程序时,你几乎总是要保存他们提供的信 ...

  3. 励志成为python大佬的第一天

    1.编码 2.格式化字符 3.list,dict,tuple,set 4.return 5.参数

  4. ABP vNext微服务架构详细教程——镜像推送

    1. Jenkins搭建 为实现容器化部署,我们需要将代码打包成镜像并推送至容器仓库,我们可以选择自建容器仓库或者使用公有云服务商提供的镜像仓库.这里我们使用阿里云提供的免费镜像仓库. 代码打包和镜像 ...

  5. windows 7 安装 vmtools 解决心得

    win7 系统安装vmtools 他有几种报错 我见过三种 一种是sp0升级到sp1很恶心 升级到sp1还需要升级到sp2 第二种是 VGA服务缺失 他这个缺失之后需要补丁 第三种就是 安装得序无法自 ...

  6. Blob文件下载type类型

    let url = window.URL.createObjectURL(new Blob([文件流(一般为res.data)], {type: "Blob类型"}) let li ...

  7. Selenium协议

    Selenium驱动浏览器使用的协议是什么? JsonWireProtocol 是通过webdriver与remote sever进行通信的web service协议.通过http请求,完成和remo ...

  8. Graphx二度关系

    import org.apache.spark.graphx._import org.apache.spark.rdd.RDDval vertexArray = Array( (1L, (" ...

  9. 9. PEP8规范

    1. 每一级缩进4个空格 2. 续行时缩进要比正常行多缩进, 要能明显看出是续行的 3. 每一行最多79个字符 4. 函数和类定义时在前后加2个空行, 类内接口在定义时, 前后加1个空行 5. 二元运 ...

  10. Python学习笔记--函数来啦!

    函数 函数,就是组织好的,可重复使用的,用来实现特定功能的代码块 实际的小案例:不使用内置函数len,利用函数知识计算出字符串的长度 实现: 函数的基础定义语法 案例:自动查核酸 实现: 函数的传入参 ...