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级别。
calicoctl命令简介的更多相关文章
- mac终端命令简介
mac终端命令简介(适合刚刚入手mac的新人们) 1.取得root权限 意义相当与windows中的超级管理员权限,甚至还要超出.root权限可以修改系统中的任何文件,不过对普通用户的意义不大,了解即 ...
- linux中的strings命令简介2
摘自:http://blog.csdn.net/stpeace/article/details/46641069 linux中的strings命令简介 之前我们聊过linux strings的用法和用 ...
- linux中的strings命令简介
摘自:http://blog.csdn.net/stpeace/article/details/46641069 linux中的strings命令简介 在linux下搞软件开发的朋友, 几乎没有不知道 ...
- Ansible(二) - 配置及命令简介
Ⅰ. Ansible Inventory Hosts文件配置 # mkdir /etc/ansible # touch /etc/ansible/hosts # cat /etc/hosts 127. ...
- Centos下grep命令简介
grep命令简介 grep 是一个最初用于Unix操作系统的命令行工具.在给出文件列表或标准输入后,grep会对匹配一个或多个正则表达式的文本进行搜索,并只输出匹配(或者不匹配)的行或文本. grep ...
- lsof命令简介
lsof命令简介: lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件 ...
- perf 高级命令简介
perf 高级命令简介 1.使用 tracepoint 当 perf 根据 tick 时间点进行采样后,人们便能够得到内核代码中的 hot spot. 使用ls命令来演示 sys_enter 这个tr ...
- Windbg 脚本命令简介 二, Windbg command
Windbg 脚本命令简介 二, Windbg script command $<, $><, $$<, $$><, $$>a< (Run Scri ...
- Mongo DB命令简介
引言 最近在学习MongoDB 总结了一些命令及常用的东西做整理 常用目录文件介绍 mongod 数据库部署命令 mongo 连接mongodb数据库而使用的命令 mongoimport 导入 ...
随机推荐
- 【KMP】hdu1867(A + B for you again) 杭电java a题真坑
点击打开链接 Problem Description Generally speaking, there are a lot of problems about strings processing. ...
- JS推断浏览器类型与版本号
在JS中推断浏览器的类型,预计是每一个编辑过页面的开发者都遇到过的问题.在众多的浏览器产品中.IE.Firefox.Opera.Safari........众多品牌却标准不一,因此时常须要依据不同的浏 ...
- 学会读懂 MySql 的慢查询日志
在前边的博客<何时.怎样开启 MySql 日志?>中,我们了解到了怎样启用 MySql 的慢查询日志. 今天我们来看一下怎样去读懂这些慢查询日志.在跟踪慢查询日志之前.首先你得保证最少发生 ...
- flex 节点删除
<mx:Script> <![CDATA[ protected function btn1_clickHandler(evt:MouseEvent ...
- java操作redis学习(一):安装及连接
文章参考自:http://www.cnblogs.com/edisonfeng/p/3571870.html,在此基础上进行了修改. 一.下载安装Redis redis官网显示暂时不支持Windows ...
- React - S1
资料: 1. https://developer.mozilla.org/zh-CN/docs/Web/JavaScript 进度: 教程 - 高级内容remaining; 参考remaining j ...
- js json按key值排序
最近有个需求需要把json按key值进行排序,可是js并没有直接的函数可以对json进行排序的这么办呢? 然后想到了一个间接的方法来实现: 1.将json中的key值取出,存在一个数组中,然后对这个数 ...
- 通过JAVA调用命令行程序
这是我在把数据导入到数据库时遇到问题,总结下来的.包含两个方法,一个方法是读取文件路径下的文件列表,主方法是执行cmd命令,在导入时想得到导入一个文件的时间,涉及到线程阻塞问题,这个问题理解不是很深, ...
- ORACLE时间函数(SYSDATE)简析
ORACLE时间函数(SYSDATE)简析 分类: 原文地址:ORACLE时间函数(SYSDATE)简析 作者:skylway 加法 select sysdate,add_months(sysdate ...
- Android 四大组件学习之BroadcastReceiver一
本节课学习四大组件最后一个, 广播接受者. 顾名思义广播接受者就是接受广播呗.比方在现实社会中,曾经每一个人家都有一台收音机,这可就能够去接受广播发出来的消息.大家都知道.程序世界也是參照的显示生活设 ...