【K8S】client-go、python-k8sclient开发K8S
0x01 client-go
1、简介
Client-go是kubernetes官方发布的调用K8S API的golang语言包,可以用来开发K8S的管理服务、监控服务,配合前端展示,就可以开发出一款定制化的、可视化的管理或监控工具。目前最新版本为7.0,对应K8S的版本为1.10,访问链接:https://github.com/kubernetes/client-go
其中client-go与K8S版本对应关系为:
由于目前我们测试环境的K8S集群版本为1.5.2,所以此处我们使用client-go2.0版本。
2、安装
可以直接使用go语言第三方包管理工具下载client-go,或者使用go语言自带的管理工具下载,需要特别注意的是,client-go包与k8s版本号有一定的对应关系,一定要选择下载与目标k8s版本对应的版本号。下载方式为:
$ go get github.com/kubernetes/client-go
或者,也可以自己手动去github下载下面的几个包:
- github.com/kubernetes/client-go
- github.com/google/gofuzz
- github.com/golang/glog
然后将它们放在$GOPATH下面的src文件夹中对应的文件夹下。例如:github.com/google/gofuzz,存放的目录为$GOPATH/src/github.com/google/gofuzz。
不过,需要特别注意的是,不知什么原因,网络上面的教程下载的client-go包存放的位置都是$GOPATH/src/k8s.io/client-go。其实go代码中引用的client-go包方式与client-go包在本地的存放位置有关,而该存放位置并没有严格的控制,可以随意存放(如果是手动下载的话),所以此处我们也将github.com/kubernetes/client-go存放位置修改为$GOPATH/src/k8s.io/client-go,如下图:
所以此时在go代码中引用client-go时的方式就变成了下面这样:
3、开发
Client-go开发k8s有两种方式,一种是in cluster模式,另一种是out of cluster模式,至于二者的区别,大致来看可以认为我们开发的go服务是否放在K8S集群内运行,在集群内运行则为in cluster模式,否则为out of cluster模式。此处我们此次采用的是out of cluster模式。
我们的项目名称为k8smanage,该项目下主要的文件为两个:main.go和config.yaml。其中,main.go中为我们访问k8s的主要代码,而config.yaml中保存了目标k8s集群的连接信息。其中,main.go中代码截图如下所示:
而config.yaml中的内容如下所示:
那么对于一个新的k8s集群来说,我们应该如何编写config.yaml文件中的内容呢?其实比较简单,在k8s集群的master上通过指令“kubectl config view”获取的信息就是我们config.yaml中的内容:
不过,为了直接通过config.yaml文件就能获取目标k8s集群的连接信息,我们没有直接使用空的clusters字段值,而是补充了里面的server字段信息,server字段值为k8s master节点上apiServer的访问地址。
到此,config.yaml文件中的配置信息就配置完成了。通过main.go中开头的代码部分就可以正常访问k8s集群了。
0x02 python-k8sclient
1、简介
python-k8sclient貌似是OpenStack维护的调用K8S API的python语言包,可以用来开发K8S的管理服务、监控服务,配合前端展示,就可以开发出一款定制化的、可视化的管理或监控工具。目前其最新版本为0.4.0,下载链接:https://pypi.org/project/python-k8sclient/
2、安装
- 手动下载:手动去https://pypi.org/project/python-k8sclient/下载该包,然后解压并在其根目录下运行python setup.py install
- Pip安装:pip install python-k8sclient
- Pycharm下载:基本操作,此处不再赘述
3、开发
k8sclient开发比较简单,只需要提供K8S master的访问地址即可,如果设置了访问账号密码,那么还需要提供它们。我这里的K8S集群未设置任何权限认证功能,所以可以直接通过URL访问,部分示例代码如下:
至于其他的开发,主要是调用k8sclient包的接口,主要功能接口可以参看k8sclient源码,部分接口功能如下:
- Pod:新建、查询所有、按名称查询、更新、删除
- RC:新建、查询所有、按名称查询、更新、删除
- Service:新建、查询所有、按名称查询、更新、删除
- Deployment:新建、查询所有、按名称查询、更新、删除
0x03 Kubernetes官方维护的Python客户端client-python
地址:https://github.com/kubernetes-client/python
【K8S】client-go、python-k8sclient开发K8S的更多相关文章
- 使用 Tye 辅助开发 k8s 应用竟如此简单(三)
续上篇,这篇我们来进一步探索 Tye 更多的使用方法.本篇我们来了解一下如何在 Tye 中如何对数据库进行链接. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次 ...
- python安装二进制k8s高可用 版本1.13.0
一.所有安装包.脚本.脚本说明.下载链接:https://pan.baidu.com/s/1kHaesJJuMQ5cG-O_nvljtg 提取码:kkv6 二.脚本安装说明 1.脚本说明: 本实验为三 ...
- python安装二进制k8s 1.11.0 一个master、一个node 查看node节点是主机名---apiserver无法启动,后来改了脚本应该可以
一.脚本说明: 本实验中master.node.etcd都是单体. 安装顺序为:先安装test1节点主要组件,然后开始安装test2节点,最后回头把test1节点加入集群中,这样做目的是理解以后扩容都 ...
- 使用 Tye 辅助开发 k8s 应用竟如此简单(一)
最近正巧在进行 Newbe.Claptrap 新版本的开发,其中使用到了 Tye 来辅助 k8s 应用的开发.该系列我们就来简单了解一下其用法. Newbe.Claptrap 是一个用于轻松应对并发问 ...
- K8s client 使用
使用的k8s client包: <dependency> <groupId>io.fabric8</groupId> <artifactId>kuber ...
- 使用 Tye 辅助开发 k8s 应用竟如此简单(二)
续上篇,这篇我们来进一步探索 Tye 更多的使用方法.本篇我们来了解一下如何在 Tye 中使用服务发现. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次阅读本系 ...
- 使用 Tye 辅助开发 k8s 应用竟如此简单(四)
续上篇,这篇我们来进一步探索 Tye 更多的使用方法.本篇我们来了解一下如何在 Tye 中如何进行日志的统一管理. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首 ...
- 使用 Tye 辅助开发 k8s 应用竟如此简单(五)
续上篇,这篇我们来进一步探索 Tye 更多的使用方法.本篇我们来了解一下如何在 Tye 中实现对分布式链路追踪. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次 ...
- 使用 Tye 辅助开发 k8s 应用竟如此简单(六)
续上篇,这篇我们来进一步探索 Tye 更多的使用方法.本篇我们将进一步研究 Tye 与分布式应用程序运行时 Dapr 如何碰撞出更精彩的火花. Newbe.Claptrap 是一个用于轻松应对并发问题 ...
随机推荐
- Selenium+PyCharm环境搭建
一.首先安装python并配置好环境变量 二.安装selenium 安装文件夹在安装的python文件夹下,例:D:\Program\python\Lib\site-packages\selenium ...
- java基本类型的默认值
基本类型 默认值 取值范围 (最大/最小) 字节数 二进制位数 byte 0 127(2^7-1) -128(-2^7) 1byte 8bit short 0 32767(2^15 - 1) -327 ...
- s6-6 TCP 连接释放
TCP 连接释放 任何一方在没有数据要传送的时候,都可以发送一个FIN置位了的 TCP 数据段 当FIN被确认的时候,该方向的连接被关闭 当双向连接都关闭了的时候,连接释放 两军队问题 两军队问题 ( ...
- Fiddler-设置取消自动更新
fiddler 启动时老弹出要更新,但不想更新,可以这样设置 Tools-Optons->General 把第一个√去掉
- appium 1.6.x版本去除安装Unlock、Setting
(appium目录不知道可以查看appium运行日志) 修改目录/usr/local/lib/node_modules/appium/node_modules/appium-android-drive ...
- UGUI小技巧之Text随文本内容自动变化大小
看了网上很多帖子,都是说在 Text 上面加上 Content Size Fitter 组件,并将对应的轴向改成 Preferred size 就可以实现 Text 大小随着文本内容自适应,如下图: ...
- 20155205 郝博雅 Exp5 MSF基础应用
20155205 郝博雅 Exp5 MSF基础应用 一.实验目标 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.一个主动攻击实践,如ms08_0 ...
- 信息安全技能树(SecWiki中Web安全工程师职位建议)
职位描述: 对公司网站.业务系统进行安全评估测试(黑盒.白盒测试): 对公司各类系统进行安全加固: 对公司安全事件进行响应,清理后门,根据日志分析攻击途径: 安全技术研究,包括安全防范技术,黑客技术等 ...
- hbase删除table时,显示table不存在
hbase删除table时,显示table不存在,但是创建table时,显示table存在. 解决方案: 清空zookeeper数据.(重新安装zookeeper)
- Linux 区别 chown和chmod的用法
chown用法用来更改某个目录或文件的用户名和用户组的chown 用户名:组名 文件路径(可以是就对路径也可以是相对路径)例1:chown root:root /tmp/tmp1就是把tmp下的tmp ...