python3 kubernetes api的使用示例


Posted in Python onJanuary 12, 2021

一、安装

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

安装

pip install kubernetes

二、认证

1、kubeconfig文件认证

首先引入SDK支持库。然后将 ~/.kube 的config文件的内容复制到本地目录,保存为文件kubeconfig.yaml,然后运行下面的python代码。

[root@k8s-m ~]# cp .kube/config  kubeconfig.yaml

#使用
from kubernetes import client, config
config.kube_config.load_kube_config(config_file="/root/kubeconfig.yaml")

三、api使用

1、列出资源信息

from kubernetes import client, config
config.kube_config.load_kube_config(config_file="/root/kubeconfig.yaml")

#获取API的CoreV1Api版本对象
v1 = client.CoreV1Api()

#列出 namespaces
for ns in v1.list_namespace().items:
  print(ns.metadata.name)
  
#列出所有的services
ret = v1.list_service_for_all_namespaces(watch=False)
for i in ret.items:
  print("%s \t%s \t%s \t%s \t%s \n" % (i.kind, i.metadata.namespace, i.metadata.name, i.spec.cluster_ip, i.spec.ports ))
  
#列出所有的pod
ret = v1.list_pod_for_all_namespaces(watch=False)
for i in ret.items:
  print("%s\t%s\t%s" % (i.status.pod_ip, i.metadata.namespace, i.metadata.name))

#列出所有deploy
ret = v1.list_deployments_for_all_namespaces(watch=False)
for i in ret.items:
  print("%s\t%s\t%s" % (i.status.pod_ip, i.metadata.namespace, i.metadata.name))
  
##列出其他资源和以上类似,不懂可以查看(kubectl api-resources)

2、创建k8s资源对象

github:https://github.com/kubernetes-client/python/tree/master/examples

创建资源(提前写好yaml资源清单)

#创建deploy
[root@k8s-m ~]# cat create_deploy.py
from os import path
import yaml
from kubernetes import client, config

def main():
  config.load_kube_config()

  with open(path.join(path.dirname(__file__), "/root/deploy.yaml")) as f:
    dep = yaml.safe_load(f)
    k8s_apps_v1 = client.AppsV1Api()
    resp = k8s_apps_v1.create_namespaced_deployment(
      body=dep, namespace="default")
    print("Deployment created. status='%s'" % resp.metadata.name)
main()

[root@k8s-m ~]# kubectl get pod 
NAME            READY  STATUS  RESTARTS  AGE
mydeploy-6946c867dc-bgcld  1/1   Running  0     40s
mydeploy-6946c867dc-rdnvj  1/1   Running  0     40s
[root@k8s-m ~]# kubectl get deploy
NAME    READY  UP-TO-DATE  AVAILABLE  AGE
mydeploy  2/2   2      2      44s


#创建pod例子(其它资源得自己查源码自己找对应的API)
[root@k8s-m ~]# cat create_pod.py 
from os import path

import yaml

from kubernetes import client, config


def main():
  config.load_kube_config()

  with open(path.join(path.dirname(__file__), "/root/pod.yaml")) as f:
    dep = yaml.safe_load(f)
    k8s_core_v1 = client.CoreV1Api()
    resp = k8s_core_v1.create_namespaced_pod(
      body=dep, namespace="default")
    print("Pod created. status='%s'" % resp.metadata.name)


if __name__ == '__main__':
  main()

##
[root@k8s-m ~]# python3 create_pod.py 
Pod created. status='nginx-pod'
[root@k8s-m ~]# kubectl get pod nginx-pod
NAME    READY  STATUS  RESTARTS  AGE
nginx-pod  1/1   Running  0     8s

3、删除资源(我这里展示pod例子,其它资源删除差不多)

参考地址:/usr/local/python3/lib/python3.6/site-packages/kubernetes/client/

[root@k8s-m ~]# cat dp.py
from os import path
import yaml
from kubernetes import client, config

def main():
  config.load_kube_config()
  k8s_core_v1 = client.CoreV1Api()
  resp = k8s_core_v1.delete_namespaced_pod(namespace="default",name='nginx-pod')
  print("delete Pod ")

[root@k8s-m ~]# python3 dp.py
delete Pod

4、查看资源(类似kubectl get pod xxx -o json)

#查看(read)

[root@k8s-m ~]# cat rp.py 
from os import path
import yaml
from kubernetes import client, config

def main():
  config.load_kube_config()
  k8s_core_v1 = client.CoreV1Api()
  resp = k8s_core_v1.read_namespaced_pod(namespace="default",name='nginx-pod')
  print("read Pod ")
  #详细信息
  print(resp)
  #指定信息
  print(resp.spec.containers[0].image)

if __name__ == '__main__':
  main()

[root@k8s-m ~]# python3  rp.py |tail
      'host_ip': '172.31.250.229',
      'init_container_statuses': None,
      'message': None,
      'nominated_node_name': None,
      'phase': 'Running',
      'pod_ip': '10.244.167.134',
      'qos_class': 'BestEffort',
      'reason': None,
      'start_time': datetime.datetime(2019, 8, 30, 9, 13, 49, tzinfo=tzutc())}}
nginx

5、修改

[root@k8s-m ~]# cat pp.py 
from os import path
import yaml
from kubernetes import client, config

def main():
  config.load_kube_config()
  k8s_core_v1 = client.CoreV1Api()
  old_resp = k8s_core_v1.read_namespaced_pod(namespace="default",name='nginx-pod')
  old_resp.spec.containers[0].image = "nginx:alpine"
  #修改镜像
  new_resp = k8s_core_v1.patch_namespaced_pod(namespace="default",name='nginx-pod',body=old_resp)
  print(new_resp.spec.containers[0].image)
if __name__ == '__main__':
  main()

[root@k8s-m ~]# python3 pp.py 
nginx:alpine

以上就是python3 kubernetes api的使用示例的详细内容,更多关于python3 kubernetes api的使用的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
10个易被忽视但应掌握的Python基本用法
Apr 01 Python
Python for Informatics 第11章 正则表达式(一)
Apr 21 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
Feb 23 Python
Django开发的简易留言板案例详解
Dec 04 Python
对python修改xml文件的节点值方法详解
Dec 24 Python
用vue.js组件模拟v-model指令实例方法
Jul 05 Python
python科学计算之narray对象用法
Nov 25 Python
python range实例用法分享
Feb 06 Python
python 装饰器功能与用法案例详解
Mar 06 Python
对python中各个response的使用说明
Mar 28 Python
Python gevent协程切换实现详解
Sep 14 Python
DRF使用simple JWT身份验证的实现
Jan 14 Python
python excel和yaml文件的读取封装
Jan 12 #Python
python drf各类组件的用法和作用
Jan 12 #Python
Python try except else使用详解
Jan 12 #Python
python 逆向爬虫正确调用 JAR 加密逻辑
Jan 12 #Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
Jan 12 #Python
使用sublime text3搭建Python编辑环境的实现
Jan 12 #Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
Jan 12 #Python
You might like
PHP配置文件中最常用四个ini函数
2007/03/19 PHP
PHP+ajax 无刷新删除数据
2010/02/20 PHP
解析PHP处理换行符的问题 \r\n
2013/06/13 PHP
解析php中const与define的应用区别
2013/06/18 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
2014/01/26 PHP
PHP $_FILES中error返回值详解
2014/01/30 PHP
php include类文件超时问题处理
2015/02/06 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
javascript中2个感叹号的用法实例详解
2014/09/04 Javascript
javascript学习笔记(八)正则表达式
2014/10/08 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
jQuery实现的背景颜色渐变动画效果示例
2017/03/24 jQuery
nodejs处理图片的中间件node-images详解
2017/05/08 NodeJs
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
JavaScript进制转换实现方法解析
2020/01/18 Javascript
vue中实现回车键登录功能
2020/02/19 Javascript
[00:50]2014DOTA2国际邀请赛 NEWBEE战队回顾
2014/08/01 DOTA
[01:25]DOTA2自定义游戏灵园鬼域等你踏足
2015/10/30 DOTA
Python使用微信SDK实现的微信支付功能示例
2017/06/30 Python
python3之微信文章爬虫实例讲解
2017/07/12 Python
通过Python 接口使用OpenCV的方法
2018/04/02 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
2019/01/04 Python
numpy:np.newaxis 实现将行向量转换成列向量
2019/11/30 Python
python Popen 获取输出,等待运行完成示例
2019/12/30 Python
通过代码实例解析Pytest运行流程
2020/08/20 Python
pycharm专业版远程登录服务器的详细教程
2020/09/15 Python
一款纯css3制作的2015年元旦雪人动画特效教程
2014/12/29 HTML / CSS
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
html5跳转小程序wx-open-launch-weapp踩坑
2020/12/02 HTML / CSS
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
企业车辆管理制度
2014/01/24 职场文书
2015年元宵节活动总结
2015/02/06 职场文书
党员干部廉政承诺书
2015/04/28 职场文书
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
2022/04/13 Java/Android
Tomcat starup.bat 脚本实现开机自启动
2022/04/20 Servers