Calico 是一个纯三层的协议,为 OpenStack 虚机和 Docker 容器提供多主机间通信。Calico 不使用重叠网络比如 flannel 和 libnetwork 重叠网络驱动,

Calico 依赖 etcd 在不同主机间共享和交换信息,存储 Calico 网络状态。Calico 网络中每个主机都要运行 Calico 组件,提供容器 interface 管理,动态路由,动态 ACL,报告状态等功能。

Calico 目前只支持 TCP、UDP、ICMP、ICMPv6 协议。

Calico 包括如下重要组件:Felix,etcd,BGP Client,BGP Route Reflector。

    • Felix:主要负责路由配置以及 ACLS 规则的配置以及下发,它存在在每个 node 节点上。
    • etcd:分布式键值存储,主要负责网络元数据一致性,确保 Calico 网络状态的准确性,可以与 kubernetes 共用。
    • BGPClient(BIRD):主要负责把 Felix 写入 kernel 的路由信息分发到当前 Calico 网络,确保 workload 间的通信的有效性。
    • BGPRoute Reflector(BIRD):大规模部署时使用,摒弃所有节点互联的 mesh 模式,通过一个或者多个 BGPRoute Reflector 来完成集中式的路由分发。

首先需要配置NetworkManager

在尝试使用Calico网络之前配置NetworkManager

NetworkManager操纵默认网络命名空间中接口的路由表,其中Calico veth对锚定用于连接到容器。这可能会干扰Calico代理正确路由的能力。

创建以下配置文件 /etc/NetworkManager/conf.d/calico.conf 以防止NetworkManager干扰接口:

  1. [keyfile]
  2. unmanaged-devices=interface-name:cali*;interface-name:tunl*

修改从官网下载的yaml文件,并根据实际情况进行修改

  1. vim calico.yaml
  2.  
  3. # 注意修改如下选项:
  4. # etcd 地址
  5.  
  6. etcd_endpoints: "https://172.16.1.64:2379,https://172.16.1.65:2379,https://172.16.1.66:2379"
  7.  
  8. # etcd 证书路径
  9. # If you're using TLS enabled etcd uncomment the following.
  10. # You must also populate the Secret below with these files.
  11. etcd_ca: "/calico-secrets/etcd-ca"
  12. etcd_cert: "/calico-secrets/etcd-cert"
  13. etcd_key: "/calico-secrets/etcd-key"
  14.  
  15. # etcd 证书 base64 地址 (执行里面的命令生成的证书 base64 码,填入里面),填入后记得把括号去除
  16.  
  17. data:
  18. etcd-key: (cat /etc/kubernetes/ssl/etcd-key.pem | base64 | tr -d '\n')
  19. etcd-cert: (cat /etc/kubernetes/ssl/etcd.pem | base64 | tr -d '\n')
  20. etcd-ca: (cat /etc/kubernetes/ssl/ca.pem | base64 | tr -d '\n')
  21.  
  22. # 修改 pods 分配的 IP 段
  23.  
  24. - name: CALICO_IPV4POOL_CIDR
  25. value: "10.254.60.0/18"

修改kubelet相应的设置,增加 cni 插件 --network-plugin=cni

Calico安装为CNI插件。必须通过传递--network-plugin=cni参数将kubelet配置为使用CNI网络。(在kubeadm上,这是默认设置。)

# vim  /etc/systemd/system/kubelet.service

中间配置增加

  1. --network-plugin=cni \

# 重新加载配置

systemctl daemon-reload
systemctl restart kubelet.service
systemctl status kubelet.service

二进制安装calicoctl,部署到一台主master节点即可

# curl -O -L https://github.com/projectcalico/calicoctl/releases/download/v3.3.1/calicoctl
# mv calicoctl /usr/local/bin/
# chmod +x /usr/local/bin/calicoctl

创建 calicoctl.cfg 配置文件

  1. # mkdir /etc/calico
  2. # vim /etc/calico/calicoctl.cfg
  3. apiVersion: projectcalico.org/v3
  4. kind: CalicoAPIConfig
  5. metadata:
  6. spec:
  7. datastoreType: "kubernetes"
  8. kubeconfig: "/root/.kube/config" #此处配置的calicoctl选择连接的是Kubernetes API datastore,而不是etcd数据库,因为是在主节点上进行的安装,免去了配置TLS的过程

  

使用calicoctl查看calico状态

  1. [root@es-60 ~]# calicoctl node status
  2. Calico process is running.
  3.  
  4. IPv4 BGP status
  5. +---------------+-------------------+-------+----------+-------------+
  6. | PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |
  7. +---------------+-------------------+-------+----------+-------------+
  8. | 172.17.213.61 | node-to-node mesh | up | 03:46:37 | Established |
  9. +---------------+-------------------+-------+----------+-------------+
  10.  
  11. IPv6 BGP status
  12. No IPv6 peers found.
  13.  
  14. [root@es- ~]# calicoctl get node #查看已注册的节点列表
  15. NAME
  16. es-60
  17. es-61

[root@es-60 ~]# calicoctl get workloadendpoints #查看工作中的负载节点
 WORKLOAD                   NODE   NETWORKS         INTERFACE
 nginx-dm-76d4ccdd7b-f2c2z  es-60  10.254.83.67/32  calidf627dba5ad
 nginx-dm-76d4ccdd7b-w9c9q  es-61  10.254.95.67/32  cali937a51d3ab8

收集诊断信息

  1. 如果遇到问题可以使用calicoctl命令行工具收集诊断信息。这应该以超级用户权限运行,例如:
  2. # calicoctl node diags

参考链接: https://docs.projectcalico.org/v3.3/usage/troubleshooting/#configure-networkmanager

Calico搭建配置的更多相关文章

  1. Keepalive双主搭建配置

    Keepalive 双主搭建配置 keepalived保证双主数据库的可用性 环境说明 192.168.1.10  keepalive 主1 192.168.1.20  keepalive 主2 19 ...

  2. Samba服务器搭建配置

    本次环境: 服务端-centos6.8-192.168.2.200 客户端1-centos6.8-192.168.2.201 客户端2-Windows7-192.168.2.104 假设条件如下: 使 ...

  3. Varnish缓存服务器的搭建配置手册

    Varnish缓存服务器的搭建配置手册 1.Varnish官方环境依赖提示 Installing Varnish Cache is as simple as enabling our package ...

  4. 转载-Linux下svn搭建配置流程

    Linux下svn搭建配置流程     一.    源文件编译安装.源文件共两个,为: 1.   下载subversion源文件 subversion-1.6.1.tar.gz http://d136 ...

  5. 基于认证的代理平台搭建配置squid-20130730

    基于认证的代理平台搭建配置squid-20130730 功能:通过squid代理实现 (1)基于用户名密码认证的出口ip路由选择 (2)基于client源ip的出口ip路由选择 (3)基于连接本机ip ...

  6. Linux下SVN服务器搭建配置

    Linux下SVN服务器搭建配置 1.SVN服务安装 yum install subversion 2.创建SVN代码仓库 mkdir /data/svn svnadmin create /data/ ...

  7. [原创]nagios搭建配置

    nagios搭建配置 一.环境 ubuntu 14.04系统 host1:172.17.0.2 serverhost2:172.17.0.3 client 二.安装 1.在两个主机上都执行一下命令: ...

  8. Spring Cloud 入门教程 - 搭建配置中心服务

    简介 Spring Cloud 提供了一个部署微服务的平台,包括了微服务中常见的组件:配置中心服务, API网关,断路器,服务注册与发现,分布式追溯,OAuth2,消费者驱动合约等.我们不必先知道每个 ...

  9. rocketmq 集群环境搭建配置

    rocketmq环境搭建配置: 一.   搭建三主集群,环境:centos-64 7.4 + RocketMQ-4.3.2 Master01: 192.168.102.68 Master02: 192 ...

随机推荐

  1. Java使用算数运算符实现两个整数互换

    有很简单的方法可以实现,不过还是用一步一个脚印的方法来试试 首先分析一下流程 这里有两个变量. int a = 10,b = 40; //此时 a 为10,b 为40 然后我们开始走路,在不依靠第三者 ...

  2. ARM 汇编学习笔记

  3. 微信小程序云函数Windows下安装wx-server-sdk

    第一次上传部署云函数时,会提示这个,建议在这之前先安装一下node.js. https://nodejs.org/en/ 下载nodejs,然后直接安装,在cmd控制台输入node -v和npm -v ...

  4. [转]Win2012的 IIS 503 错误

    下载并安装 https://www.microsoft.com/zh-CN/download/details.aspx?id=48145 因为安装了 dotnet-hosting-2.2.3-win. ...

  5. [转][ActiveMQ]Apache.NMS.ActiveMQ 用法

    下载 C# 组件:http://archive.apache.org/dist/activemq/apache-nms/1.7.0/ 使用说明:https://www.cnblogs.com/cjm1 ...

  6. [UE4]计算箭头方向:正切、SetRelativeRotation、RotationFromXVector、Get MotionController Thumbstick X

    正切 正弦函数 sinθ=y/r 余弦函数 cosθ=x/r 正切函数 tanθ=y/x 余切函数 cotθ=x/y 正割函数 secθ=r/x 余割函数 cscθ=r/y   已知y和x,求角度θ: ...

  7. New Journey Prepare

    1. 车载USB充电器. 2. 轮胎检测,备胎充气. 3. 给刹车片加润滑油. 3. 给娃办身份证. 4. 取公积金. 5. 入职准备材料.

  8. Java子类访问父类的私有成员变量

    /**子类会继承父类所有的属性和方法. * 但是根据不同的权限标识符,子类不可见父类的私有变量,但可以通过父类的公共方法访问私有变量 * 所以对于重名变量,子类和父类都各有一份. * 对于子类和父类中 ...

  9. 洛谷题解 CF807A 【Is it rated?】

    同步题解 题目 好吧,来说说思路: 1.先读入啦~(≧▽≦)/~啦啦啦 2.判断a[i]赛前赛后是否同分数,如果分数不同,则输出,return 0 . 3.如果同分数,则判断a[i]赛前(或赛后)是否 ...

  10. Java进程&线程(一)

    Java进程&线程 程序:程序员写的代码,就是代码,不运行好像不会发生什么: 进程:一个进程可以理解为"运行的"一个程序,当我们启动一个java程序后,对应的jvm就会创建 ...