目前的工作中会经常用到etcd,使用etcdctl命令有时感觉不是很方便的处理后续数据,所以记录下使用python操作etcd的一些常用方法
使用python操作etcd获取单个key会返回data和meta两个值,如果是获取列表需要循环取出,取出的值为bytes类型,需要使用decode()进行转换
下面我们来介绍下一些常见的操作
1.put命令插入和更新key
import etcd3 etcd = etcd3.client('127.0.0.1', 2379, user=root, password=admin123) #k8s集群使用证书这样配置 #etcd = etcd3.client('192.168.1.72', 2379, ca_cert="/etc/kubernetes/pki/etcd/ca.crt", cert_cert="/etc/kubernetes/pki/etcd/server.crt", cert_key="/etc/kubernetes/pki/etcd/server.key") etcd.put("/test", "test data !")
etcd的put命令可以用来插入新key和更新已有key,操作主要使用put方法,
put方法中还可以使用prev_kv参数获取改变之前的上一个键值对
ret = etcd.put("/test", "test data2 !") print(ret.prev_kv.value.decode())
2.get方法获取键值
import etcd3 etcd = etcd3.client('127.0.0.1', 2379, user=root, password=admin123) data, path = etcd.get('/test') print(data.decode()) print(path.key.decode())
etcd的get方法用来获取可以键的键值
3.get_range方法获取键值范围和排序
import etcd3 etcd = etcd3.client('127.0.0.1', 2379, user=root, password=admin123) for data, meta in etcd.get_range('/test-1', '/test-9', sort_order='ascend', sort_target='mod'): print(data.decode()) print(meta.key.decode())
排序可以使用sort_order参数进行排序,有3种支持参数配置
descend:代表倒序 ascend: 代表正序 none: 即不排序。
sort_target适用于排序的的键值字段,有5中支持参数配置
key: 使用key的ascii来排序 version: 使用key的版本来排序,没有修改过的key版本为0,修改过一次加1 create: key创建的时间排序 mod: key最后一次修改的时间排序 value: 根据键值来排序
另外还有一些其他参数,可以自行去查看:https://doczhcn.gitbook.io/etcd/index-1/kv_service/range
4.get_prefix方法获取键范围内的集合
import etcd3 etcd = etcd3.client('127.0.0.1', 2379, user=root, password=admin123) for data, meta in etcd.get_prefix('/test/'): print(data.decode(),meta.key.decode())
这个方法在底层实际和get_range使用的是同一个方法