【K8S】client-go、python-k8sclient开发K8S

 

0x01 client-go

一、简介

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版本。python

二、安装

能够直接使用go语言第三方包管理工具下载client-go,或者使用go语言自带的管理工具下载,须要特别注意的是,client-go包与k8s版本号有必定的对应关系,必定要选择下载与目标k8s版本对应的版本号。下载方式为:git

$ go get github.com/kubernetes/client-go

或者,也能够本身手动去github下载下面的几个包: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,以下图:golang

因此此时在go代码中引用client-go时的方式就变成了下面这样:api

三、开发

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集群了。google

0x02 python-k8sclient

一、简介

python-k8sclient貌似是OpenStack维护的调用K8S API的python语言包,能够用来开发K8S的管理服务、监控服务,配合前端展现,就能够开发出一款定制化的、可视化的管理或监控工具。目前其最新版本为0.4.0,下载连接:https://pypi.org/project/python-k8sclient/

二、安装

  • 手动下载:手动去https://pypi.org/project/python-k8sclient/下载该包,而后解压并在其根目录下运行python setup.py install
  • Pip安装:pip install python-k8sclient
  • Pycharm下载:基本操做,此处再也不赘述

三、开发

k8sclient开发比较简单,只须要提供K8S master的访问地址便可,若是设置了访问帐号密码,那么还须要提供它们。我这里的K8S集群未设置任何权限认证功能,因此能够直接经过URL访问,部分示例代码以下:

至于其余的开发,主要是调用k8sclient包的接口,主要功能接口能够参看k8sclient源码,部分接口功能以下:

  • Pod:新建、查询全部、按名称查询、更新、删除
  • RC:新建、查询全部、按名称查询、更新、删除
  • Service:新建、查询全部、按名称查询、更新、删除
  • Deployment:新建、查询全部、按名称查询、更新、删除

 

0x03 Kubernetes官方维护的Python客户端client-python

 地址:https://github.com/kubernetes-client/python

相关文章
相关标签/搜索