zoukankan      html  css  js  c++  java
  • 【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

  • 相关阅读:
    nullnullConnecting with WiFi Direct 与WiFi直接连接
    nullnullUsing WiFi Direct for Service Discovery 直接使用WiFi服务发现
    nullnullSetting Up the Loader 设置装载机
    nullnullDefining and Launching the Query 定义和启动查询
    nullnullHandling the Results 处理结果
    装置输出喷泉装置(贪心问题)
    数据状态什么是事务?
    停止方法iOS CGD 任务开始与结束
    盘文件云存储——金山快盘
    函数标识符解决jQuery与其他库冲突的方法
  • 原文地址:https://www.cnblogs.com/leejack/p/9525878.html
Copyright © 2011-2022 走看看