zoukankan      html  css  js  c++  java
  • calicoctl命令简介

    背景

    在calico中,有多种网络资源。以v1.6.1为例,网络资源包含:node,bgpPeer,hostEndpoint,workloadEndpoint,ipPool,policy,profile等。

    下面我将讲解如何使用calicoctl命令行工具来控制这些网络资源。

    用法

    create

    创建一个网络资源。比如说我们要创建一个“profile” 的网络资源,那么先以json或者yaml的文件格式定义这个profile的属性,然后使用-f参数来指定。例如,属性文件名为profile1.json,其内容为:

    {
        "kind": "profile",
        "apiVersion": "v1",
        "metadata": {
          "name": "calico-test",
          "tags": [
            "calico-test"
          ]
        },
        "spec": {
          "ingress": [
            {
              "action": "allow",
              "source": {
                "tag": "calico-test"
              },
              "destination": {}
            }
          ],
          "egress": [
            {
              "action": "allow",
              "source": {},
              "destination": {}
            }
          ]
        }
     }
    

    使用calicoctl命令创建profile:

    # calicoctl create -f profile1.json
    Successfully created 1 'profile' resource(s)
    

    另外,还可以使用-c选项来指定配置文件。

    ps:这里需要注意的是,创建了calico网络之后,使用同一个calico网络的容器之间可以实现网络互通。但如果想让一个外部的节点也可以和这个calico网络互通,那么需要进行一些修改,在profile的spec.ingress中添加一个配置。

    {
              "action": "allow",
              "source": {
                "nets": [
                  "115.105.115.0/24"
                ]
              },
              "destination": {}
            }
    

    然后,再通过下面会讲到的“calicoctl replace”命令替换profile。这样,ip段位于"115.105.115.0/24"的docker host便可以访问该calico网络下的容器。

    get

    获取一个网络资源的信息。

    这里我们也以上面创建的profile为例。

    # calicoctl get profile calico-test -o json
    [
      {
        "kind": "profile",
        "apiVersion": "v1",
        "metadata": {
          "name": "calico-test",
          "tags": [
            "calico-test"
          ]
        },
        "spec": {
          "ingress": [
            {
              "action": "allow",
              "source": {
                "tag": "calico-test"
              },
              "destination": {}
            }
          ],
          "egress": [
            {
              "action": "allow",
              "source": {},
              "destination": {}
            }
          ]
        }
      }
    ]
    

    这里是以json的格式来输出,还可以使用yaml、GoFormat等形式。

    replace

    替换一个网络资源。修改上述的profile1.json文件中的内容后,直接执行下面命令可以替换网络资源的相关属性。

    # calicoctl replace -f profile1.json
    Successfully replaced 1 'profile' resource(s)
    

    apply

    综合了create和replace命令。没有资源时就创建,有资源时就替换。

    delete

    删除一个网络资源。

    创建替换网络资源时,都是通过文件来创建,而配置文件中都指明了网络资源的类型、属性等。但删除网络资源就简单多了,只需要通过网络资源的类型和名称就可以删除对应的资源。

    # calicoctl delete profile calico-test
    Successfully deleted 1 'profile' resource(s)
    

    config

    管理系统级别和节点级别的配置选项。

    该命令下又包含三个子命令:set、unset和get。设置、取消和获取。

    具体的设置项包含:logLevel(配置值有none,debug,info,warning,error,critical),nodeToNodeMesh(on,off),asNumber(0-4294967295),ipip(on,off)。

    ipam

    IP地址管理。

    该命令下又包含三个子命令:release和show。其中:

    • release:释放已经被calico分配的IP;
    • show:显示分配IP的详细详细。

    node

    calico节点管理。

    该命令下又包含四个子命令:run、status、diags和checksystem。其中:

    • run命令可用于在该服务器上运行一个calico实例;
    • status命令可检查整个calico网络的状态;
    • diags用于手机calico节点的诊断信息;
    • checksystem命令用于检查改服务器是否可以运行一个calico实例。

    我们经常使用run命令来创建一个calico实例,比如:

    # calicoctl node run --node-image=calico/node:v2.6.2 --ip=192.168.115.73
    Running command to load modules: modprobe -a xt_set ip6_tables
    Enabling IPv4 forwarding
    Enabling IPv6 forwarding
    Increasing conntrack limit
    Removing old calico-node container (if running).
    Running the following command to start calico-node:
    
    docker run --net=host --privileged --name=calico-node -d --restart=always -e NODENAME=dcos-agent1 -e CALICO_NETWORKING_BACKEND=bird -e CALICO_LIBNETWORK_ENABLED=true -e IP=192.168.115.73 -e ETCD_ENDPOINTS=http://192.168.115.111:2379 -v /var/log/calico:/var/log/calico -v /var/run/calico:/var/run/calico -v /lib/modules:/lib/modules -v /run:/run -v /run/docker/plugins:/run/docker/plugins -v /var/run/docker.sock:/var/run/docker.sock calico/node:v2.6.2
    
    Image may take a short time to download if it is not available locally.
    Container started, checking progress logs.
    
    Skipping datastore connection test
    Using IPv4 address from environment: IP=109.105.115.73
    IPv4 address 109.105.115.73 discovered on interface em1
    No AS number configured on node resource, using global value
    Using node name: dcos-agent1
    Starting libnetwork service
    Calico node started successfully
    

    这里,使用了的calico镜像版本为calico/node:v2.6.2,通过日志可以看到其启动calico容器时的具体命令。

    此外,“calicoctl node run”有相当多的选项可以使用,可以通过“calicoctl node run --help”来查看。但是,这些选项还不足够覆盖所有的calico自身的选项(如etcd的url等),我们可以配置/etc/calico/calicoctl.cfg文件来实现。当然,也可以配置到其他文件,再通过-f选项来指定该文件。配置文件的示例如下:

    apiVersion: v1
    kind: calicoApiConfig
    metadata:
    spec:
      datastoreType: "etcdv2"
      etcdEndpoints: "http://${etcd-ip1}:2379,http://${etcd-ip2}:2379"
    

    version

    展示版本。

    选项

    -h --help

    显示帮助。

    -l --log-level=

    设置日志级别。日志级别包含:panic,fatal,error,warn,info,debug。默认是fatal级别。

  • 相关阅读:
    定义一个Dog类,它和静态数据成员Dogs记录Dog的个体数目。静态成员函数GetDogs用来存取Dogs。设计并测试这个类--简单
    互联网无插件直播流媒体服务器方案EasyNVR下载新的软件执行程序,出现“invalid license”字样是什么意思?
    视频流媒体服务器RTSP拉流、RTMP推流方案EasyNVR如何实现视频转推其他直播间?
    视频流媒体服务器RTSP拉流、RTMP推流流媒体服务器授权方案之加密机运行后无法授权问题解决
    RTSP安防网络摄像头/海康大华硬盘录像机网页无插件直播之EasyNVR流媒体服务器系列产品直播延时问题解析
    海康大华网络摄像头RTSP_Onvif网页无插件直播流媒体服务器EasyNVR录像版设定录像文件存储位置的方法解析
    同一路摄像头视频流接入RTSP_Onvif网页无插件直播流媒体服务器EasyNVR与其他平台播放视频有差异的原因分析
    RTSP_Onvif安防摄像头直播流媒体服务器EasyNVR产品调用接口出现"Unauthorized"问题的解决方法
    安防摄像头RTSP/Onvif协议网页无插件直播视频流媒体服务器EasyNVR录像回看质量的影响因素有哪些?
    海康、大华等网络摄像头RTSP_Onvif网页无插件直播流媒体服务器EasyNVR在内网环境下,设备不在线问题处理
  • 原文地址:https://www.cnblogs.com/styshoo/p/8486598.html
Copyright © 2011-2022 走看看