用法
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:
#calicoctlcreate-fprofile1.json Successfullycreated1'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为例。
#calicoctlgetprofilecalico-test-ojson [ { "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文件中的内容后,直接执行下面命令可以替换网络资源的相关属性。
#calicoctlreplace-fprofile1.json Successfullyreplaced1'profile'resource(s)
apply
综合了create和replace命令。没有资源时就创建,有资源时就替换。
delete
删除一个网络资源。
创建替换网络资源时,都是通过文件来创建,而配置文件中都指明了网络资源的类型、属性等。但删除网络资源就简单多了,只需要通过网络资源的类型和名称就可以删除对应的资源。
#calicoctldeleteprofilecalico-test Successfullydeleted1'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实例,比如:
#calicoctlnoderun--node-image=calico/node:v2.6.2--ip=192.168.115.73 Runningcommandtoloadmodules:modprobe-axt_setip6_tables EnablingIPv4forwarding EnablingIPv6forwarding Increasingconntracklimit Removingoldcalico-nodecontainer(ifrunning). Runningthefollowingcommandtostartcalico-node: dockerrun--net=host--privileged--name=calico-node-d--restart=always-eNODENAME=dcos-agent1-eCALICO_NETWORKING_BACKEND=bird-eCALICO_LIBNETWORK_ENABLED=true-eIP=192.168.115.73-eETCD_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.sockcalico/node:v2.6.2 Imagemaytakeashorttimetodownloadifitisnotavailablelocally. Containerstarted,checkingprogresslogs. Skippingdatastoreconnectiontest UsingIPv4addressfromenvironment:IP=109.105.115.73 IPv4address109.105.115.73discoveredoninterfaceem1 NoASnumberconfiguredonnoderesource,usingglobalvalue Usingnodename:dcos-agent1 Startinglibnetworkservice Caliconodestartedsuccessfully
这里,使用了的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级别。