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 相关文章推荐
python自动化测试之setUp与tearDown实例
Sep 28 Python
python列出目录下指定文件与子目录的方法
Jul 03 Python
Python下载网络文本数据到本地内存的四种实现方法示例
Feb 05 Python
python3.7.0的安装步骤
Aug 27 Python
python3 深浅copy对比详解
Aug 12 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
Aug 18 Python
Python高级特性 切片 迭代解析
Aug 23 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
Apr 20 Python
Python使用jpype模块调用jar包过程解析
Jul 29 Python
用Python制作mini翻译器的实现示例
Aug 17 Python
python time.strptime格式化实例详解
Feb 03 Python
PyTorch 如何检查模型梯度是否可导
Jun 05 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安装全攻略:APACHE
2006/10/09 PHP
php 缩略图实现函数代码
2011/06/23 PHP
php之XML转数组函数的详解
2013/06/07 PHP
ThinkPHP3.2.2的插件控制器功能简述
2014/07/09 PHP
在laravel中实现ORM模型使用第二个数据库设置
2019/10/24 PHP
尽可能写"友好"的"Javascript"代码
2007/01/09 Javascript
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
简短几句jquery代码的实现一个图片向上滚动切换
2011/09/02 Javascript
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
2013/01/29 Javascript
针对后台列表table拖拽比较实用的jquery拖动排序
2016/10/10 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
基于JavaScript实现无缝滚动效果
2017/07/21 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
template.js前端模板引擎使用详解
2017/10/10 Javascript
微信小程序实现发微博功能的示例代码
2020/06/24 Javascript
[01:37]全新的一集《真视界》——TI7总决赛
2017/09/21 DOTA
python实现井字棋游戏
2020/03/30 Python
Python自定义函数定义,参数,调用代码解析
2017/12/27 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
django-rest-framework解析请求参数过程详解
2019/07/18 Python
在django模板中实现超链接配置
2019/08/21 Python
Django websocket原理及功能实现代码
2020/11/14 Python
Office DEPOT法国官网:欧迪办公用品采购
2018/01/03 全球购物
土耳其国际性时尚购物网站:Modanisa
2018/01/19 全球购物
西班牙美妆电商:Perfume’s Club(有中文站)
2018/08/08 全球购物
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
2019年分享net面试的经历和题目
2016/08/07 面试题
《中国的气候》教学反思
2014/02/23 职场文书
党员自我剖析材料(群众路线)
2014/10/06 职场文书
2015年教师党员自我评价材料
2015/03/04 职场文书
2015年档案管理工作总结
2015/04/08 职场文书
高效笔记技巧分享:学会这些让你不再困扰
2019/09/04 职场文书
几款流行的HTML5 UI框架比较(小结)
2021/04/08 HTML / CSS
MySQL COUNT函数的使用与优化
2021/05/10 MySQL
Python简易开发之制作计算器
2022/04/28 Python