`kubernetes之网络组件calico

kubernetes之网络组件calico

最近搭建k8s生产集群使用的网络组件就是calico,顺便写一点东西加深自己的记忆

  • calico大体是什么东西呀

    calico就是为OpenStack虚机,docker创建的容器,k8s创建的pod这类的东西相互之间实现网络通信。

    在生产中判断calico是否安装成功呀,主要的依据之一是看看路由信息是否写入。

  • calico的核心组件

    Flixe: 跑在每天需要运行的节点上,主要负责配置路由和ACLs信息,通过这样保证与endpoint的连通性。
    Etcd: 分布式键值存储,存储一些网络数据,保证calico的网络状态的准确性吧。

    BGPclient:主要就是负责把一些路由配置和ACLs信息(说白了就是Flixe负责的东西)写到内核当中

    BGP Route Reflector:大规模部署时使用,通过一个或者多个BGP Route Reflector来完成集中式的路由分发

  • calico的网络方式

    IPiP:就是按照字面意思ip套ip,就是一层ip上封装一层ip,就是基本上实现了一个基于ip的网桥,就是在通信的两端写上路由从而实现互相通信。

    BGP:边界网关协议,是互联网上一个核心的去中心化自治路由协议。

  • 在生产上布置calico出现的问题

其中的关键字BIRD is not ready: Failed to stat() nodename file: stat /var/lib/calico/nodename: no such file or directory

主要原因:calico 没有自己创建的nodename文件导致检测是未发现nodename信息所以导致报错

解决方法:就是在每一台主机上安装上面提供的创建目录增加权限然后写一个nodename文件

#创建目录和文件

mkdir /var/lib/calico/
touch /var/lib/calico/nodename
#将ip写进nodename文件中

echo "192.168.12.10"  >   /var/lib/calico/nodename

还有另一个问题

关键字:

calico/node is not ready: BIRD is not ready: BGP not established with 10.203.14.223,10.203.15.206,10.203.15.87,10.203.15.6,10.203.15.78

主要原因:在一个集群中有很多主机,一般情况主机的网卡interfance是一样的,还有一种情况是不一样的比如ens33,bond1,等。这个问题就是网络接口不一样导致的。

解决方法:修改yaml文件,找到interfance="ens33"这样的字段吧,将其改成自己对应的网络接口名称,我们环境bond1,bond2这样的网卡就是需要修改测interfance=“bond1$”,如果是bond1,ens33这种的interfance=“bond1|ens33”,示例如下:

- name: IP_AUTODETECTION_METHOD
  value: "interfance"="bond1$"
- name: IP6_AUTODETECTION_METHOD
  value: "interfance"="bond1$"
- name: IP_AUTODETECTION_METHOD
  value: "interfance"="bond1|ens33"
- name: IP6_AUTODETECTION_METHOD
  value: "interfance"="bond1|ens33"
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页