最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

开源免费:分享powershell读写k8s的etcd的脚本库

来源:博客园

powershell etcd read write put get del kubernetes k8s 读写 博客园

---【前言】---

篡改记忆=写入你脑仁,这是一项可怕的技术!它可以很容易把猫的爸爸,篡改成狗狗的儿子。让你的情人轻易地变成你的仇人!还不明白?很明显k8s的脑仁是etcd

---【正文】---

系统需求:win+powershell v5.xwin+powershell v7.xlinux+powershell v7.x支持osx支持树莓派支持arm cpu


(相关资料图)

支持etcd版本:3.4.x3.5.x

版本低的话,按照下述需要修改脚本:gRPC gateway endpoint has changed since etcd v3.3:

etcd v3.2 or before uses only [CLIENT-URL]/v3alpha/*.etcd v3.3 uses [CLIENT-URL]/v3beta/* while keeping [CLIENT-URL]/v3alpha/*.etcd v3.4 uses [CLIENT-URL]/v3/* while keeping [CLIENT-URL]/v3beta/*.[CLIENT-URL]/v3alpha/* is deprecated.etcd v3.5 or later uses only [CLIENT-URL]/v3/*.[CLIENT-URL]/v3beta/* is deprecated.

脚本特色:支持http,支持无账号密码。支持账号密码。

脚本列表:del-etcdkey.ps1get-etcdhealth.ps1get-etcdkey.ps1get-etcdversion.ps1list-etcdkey.ps1put-etcdkey.ps1

下载:

https://gitee.com/chuanjiao10/powershell/tree/master/nosql/etcd

反馈,或新需求:QQ群号=183173532

后续会增加若干metrics监控,备份,运维脚本,或参数。而watch-key,get key的历史记录,这些脚本有必要吗?我不知道。

轮询key的话。线程空闲后,还可以干别的活。因为watch-key是阻塞的。watch几个key,需要用到一个线程,并且这个线程一直在空等,我看不如轮询。欢迎入群讨论。

---【k8s版etcd】---

系统需求:win+powershell v7.xlinux+powershell v7.x支持osx支持树莓派支持arm cpu

支持etcd版本:3.4.x3.5.x

支持k8s版本:1.17及以上

脚本特色:不支持账号密码登录etcd。支持k8s的https私钥认证,因为这些rsa的key本身就是公私钥认证,比密码更安全。

脚本列表:del-k8skey.ps1get-k8shealth.ps1get-k8skey.ps1list-k8skey.ps1put-k8skey.ps1

下载:

https://gitee.com/chuanjiao10/powershell/tree/master/nosql/k8setcd

用法:1 在win上安装powershell v7.3.x或在linux上一键安装powershell v7.3.x https://gitee.com/chuanjiao10/kasini3000_agent_linux因为powershell v7新增了个跳过ca认证的参数。假如写脚本去兼容psv5,写起来比较麻烦,索性暂时不支持ps v5了。

2 首先需要合并cert和私钥。在k8s的master上:

openssl pkcs12 -export \-inkey /etc/kubernetes/pki/etcd/server.key \-in /etc/kubernetes/pki/etcd/server.crt \-out ./k8s.pfx

然后把【k8s.pfx】复制到任意win,linux机子上。

3 用win,linux版powershell运行:

$global:endpoints = "https://192.168.1.2,https://192.168.1.3"./put-k8skey.ps1 -k "窃脑宅男" -v "食/脑-丧\B" -pfx "./k8s.pfx"./get-k8skey.ps1 -k "窃脑宅男" -pfx "./k8s.pfx"$这是一台真实的k8s = ./get-k8sKey.ps1 "./k8s.pfx" -k "/registry/apiregistration.k8s.io/apiservices/v1.batch"$b = $这是一台真实的k8s | ConvertFrom-Json$b.metadata.managedFields

返回:

manager : kube-apiserveroperation : UpdateapiVersion : apiregistration.k8s.io/v1time : 2022/7/23 7:51:06fieldsType : FieldsV1fieldsV1 : @{f:metadata=; f:spec=}

---【后记】---

问:为什么不用etcdctl,而要编写读写etcd的库脚本?绕过k8s的api和授权,去读写值,无疑是最方便的。以前我用etcdctl,但还是离不开脚本调用它。比如shell,就需要总是调用curl和jg这两个进程。而powershell内置的相关命令,是线程级别的,不需要总是fork进程,相当于费内存省cpu。这对于批量读写etcd,还是能省不少cpu的。总之,etcdctl没有这个功能:把json解析成powershell哈希表对象。

etcd作为键值对数据库,值本身并不支持存储powershell对象。而要实现“存储ps对象的值”,需要再套一个序列化脚本,这也需要写脚本。

请问,绕过k8s的api,用脚本去读写etcd的人多起来后,k8s会不会额外加密?来故意设置障碍?

最后:有了这些库脚本,再加上【kasini3000库】,很容易实现【etcd扩容,缩容】,【etcd备份,恢复】,【从外部数据库,ssh远程给脚本传值,直接读写k8s,实现某个功能】。

关键词: