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.2Image 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命令简介相关推荐
- linux wc 命令简介
此wc命令不是让大家没有食欲的地方.而是linux下一个简单的小命令. NAME wc - word, line, character, and byte count SYNOPSIS wc [-cl ...
- WINCE cvrtbin命令简介
********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi ...
- find与grep命令简介及正则表达式(转)
find与grep命令简介及正则表达式 两个更为有用的命令和正则表达式 在我们开始学习新的Shell编程知识之前,我们先来看一下两个更为有用的两个命令,这两个命令虽然并不是Shell的一部分,但是在进 ...
- NoSQL数据库Redis使用命令简介
NoSQL 数据库Redis使用命令简介 NOSQL数据库可以按照它们的数据模型分成4类: 1.键-值对存储库(Key-Value) redis-- 2.BigTable实现(BigTable-imp ...
- 快速上手Linux核心命令(一):核心命令简介
Linux核心命令系列文章目录 快速上手Linux核心命令(一):核心命令简介 快速上手Linux核心命令(二):关机.重启 快速上手Linux核心命令(三):文件和目录操作命令 快速上手Linux核 ...
- AIX下sort命令简介及使用
AIX下sort命令简介及使用 sort -rn +3 , r倒排序,n按照数字排序: +3按照第四列排序: 第一列是+0: 学习:http://blog.csdn.net/chen_linbo/a ...
- Mongo DB命令简介
引言 最近在学习MongoDB 总结了一些命令及常用的东西做整理 常用目录文件介绍 mongod 数据库部署命令mongo 连接mongodb数据库而使用的命令mongoimport 导入功能mong ...
- mset redis_redis mset string 命令简介
一.命令简介 mset string命令在redis中主要功能是: 可以通过一条命令对多个键进行赋值操作, 类似与一次执行多条set命令 二.命令使用说明 命令语法如下: redis 192.168. ...
- php redis list llen,redis llen list 命令简介
一.命令简介 llen list命令在redis中的主要功能是: 返回一个list(列表)中的元素个数. 二.命令使用说明 命令语法如下: redis 192.168.8.123>llen li ...
最新文章
- 《程序员歌单》请查收
- 关键词联想关联 php,ECSHOP商品关键词模糊分词搜索插件,商品列表关键字加红功能...
- 代码审计中的SQL注入
- |POJ 2342|动态规划|Anniversary party
- Android Binder实战开发指南之开篇
- 欠采样临界采样matlab,信号临界采样、过采样、欠采样实验报告.doc
- ZEMAX知识点:坐标间断面(coordinate break)
- 2. ISBN 号码
- CSU 1725 加尔鲁什·地狱咆哮对阵虚灵大盗拉法姆(dp)
- 面向金融场景的 Vue.js 移动端组件库 mand-mobile
- 独立开发仿造一个智能窗帘机器人
- 【100%通过率】华为OD机试真题 Python 实现【获取最大软件版本号】【2022.11 Q4 新题】
- Show, Attend, and Tell | a PyTorch Tutorial to Image Captioning代码调试(跑通)
- JavaScript:创建对象(原型模式和构造函数模式)
- 分布式 | 如何通过 dble 的 split 功能,快速地将数据导入到 dble 中
- git 重置用户名和密码
- 区块链开发之Metamask使用调研
- NIST 网络安全相关标准 美国 (简单整理)
- IIS的安装、配置与测试
- python娃娃在地上摆积木_Python语言要从娃娃抓起
热门文章
- 什么是跨终端web开发
- 辛星浅析ruby下的mkmf.rb can't find header files for ruby at
- openoffice安装及卸载方式
- 手电筒安卓_【ROM】Flyme8 安卓9 通刷包OneMind3.5 Aicy 气泡通知 小窗模式 全局夜间模式 游戏模式...
- 优秀的时间管理软件 用于效率办公和自我提升的任务管理便签工具
- 掌握树状数组~彻底入门
- M - 相似三角形_Java
- class jqprint 失效_web的各种前端打印方法之jquery打印插件jqprint实现网页打印
- EasyConnect Download
- MTK6765编译环境搭建