zoukankan      html  css  js  c++  java
  • Calico搭建配置

    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干扰接口:

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

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

    vim calico.yaml
    
    # 注意修改如下选项:
    # etcd 地址
    
      etcd_endpoints: "https://172.16.1.64:2379,https://172.16.1.65:2379,https://172.16.1.66:2379"
      
     
    # etcd 证书路径
      # If you're using TLS enabled etcd uncomment the following.
      # You must also populate the Secret below with these files. 
        etcd_ca: "/calico-secrets/etcd-ca"  
        etcd_cert: "/calico-secrets/etcd-cert"
        etcd_key: "/calico-secrets/etcd-key"  
    
    
    # etcd 证书 base64 地址 (执行里面的命令生成的证书 base64 码,填入里面),填入后记得把括号去除
    
    data:
      etcd-key: (cat /etc/kubernetes/ssl/etcd-key.pem | base64 | tr -d '
    ')
      etcd-cert: (cat /etc/kubernetes/ssl/etcd.pem | base64 | tr -d '
    ')
      etcd-ca: (cat /etc/kubernetes/ssl/ca.pem | base64 | tr -d '
    ')
      
      
    # 修改 pods 分配的 IP 段
    
                - name: CALICO_IPV4POOL_CIDR
                  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

    中间配置增加

    --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 配置文件

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

      

    使用calicoctl查看calico状态

    [root@es-60 ~]# calicoctl node status
    Calico process is running.
    
    IPv4 BGP status
    +---------------+-------------------+-------+----------+-------------+
    | PEER ADDRESS  |     PEER TYPE     | STATE |  SINCE   |    INFO     |
    +---------------+-------------------+-------+----------+-------------+
    | 172.17.213.61 | node-to-node mesh | up    | 03:46:37 | Established |
    +---------------+-------------------+-------+----------+-------------+
    
    IPv6 BGP status
    No IPv6 peers found.
    
    [root@es-60 ~]# calicoctl get node  #查看已注册的节点列表
    NAME    
    es-60   
    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

    收集诊断信息

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

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

  • 相关阅读:
    需求工程阅读笔记03
    需求工程阅读笔记02
    【Augmented Reality】增强现实中的光学透射式头盔显示器的标定进阶
    基于单个RGB摄像头的手势识别程序设计与实现
    将Vuforia程序发布到Windows10系统的基本流程
    基于Unity3D 的Vuforia SDK开发基础教程
    微软KinectV2深度传感器在Ubuntu上的配置和使用
    Windows 10(64位)配置Caffe运行环境的基本流程
    Ubuntu14.04 64位配置Caffe 教程(基于CUDA7.5)
    空间增强现实——基于贝塞尔曲面的异形表面投影变形技术
  • 原文地址:https://www.cnblogs.com/wjoyxt/p/9994837.html
Copyright © 2011-2022 走看看