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获取远程图片大小和尺寸的方法
Mar 26 Python
Python中的urllib模块使用详解
Jul 07 Python
Python时间获取及转换知识汇总
Jan 11 Python
python 限制函数调用次数的实例讲解
Apr 21 Python
使用python生成杨辉三角形的示例代码
Aug 29 Python
Python重新加载模块的实现方法
Oct 16 Python
Python read函数按字节(字符)读取文件的实现
Jul 03 Python
Python3离线安装Requests模块问题
Oct 13 Python
windows中安装Python3.8.0的实现方法
Nov 19 Python
Python面向对象封装操作案例详解 II
Jan 02 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
Apr 08 Python
Python Pandas读取Excel日期数据的异常处理方法
Feb 28 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数据库抽象层 PDO
2011/05/07 PHP
PHP动态生成javascript文件的2个例子
2014/04/11 PHP
不使用php api函数实现数组的交换排序示例
2014/04/13 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
2014/07/19 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
laravel框架使用极光推送消息操作示例
2020/02/15 PHP
PHP中SESSION过期设置
2021/03/09 PHP
javascript倒计时功能实现代码
2012/06/07 Javascript
js实现在文本框光标处添加字符的方法介绍
2012/11/24 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
js获取下拉列表的值和元素个数示例
2014/05/07 Javascript
jQuery grep()方法详解及实例代码
2016/10/30 Javascript
巧用数组制作图片切换js代码
2016/11/29 Javascript
Javascript 引擎工作机制详解
2016/11/30 Javascript
webpack入门+react环境配置
2017/02/08 Javascript
Angularjs中数据绑定的实例详解
2017/08/25 Javascript
JavaScript满天星导航栏实现方法
2018/03/08 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
2019/09/05 Javascript
python基础教程之基本内置数据类型介绍
2014/02/20 Python
python实现字符串和日期相互转换的方法
2015/05/13 Python
Python实现豆瓣图片下载的方法
2015/05/25 Python
Python爬取国外天气预报网站的方法
2015/07/10 Python
python实现数据图表
2017/07/29 Python
使用Django搭建web服务器的例子(最最正确的方式)
2019/08/29 Python
python BlockingScheduler定时任务及其他方式的实现
2019/09/19 Python
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
Booking.com德国:预订最好的酒店和住宿
2020/02/16 全球购物
成人教育自我鉴定
2013/11/01 职场文书
护士演讲稿范文
2014/01/05 职场文书
县委常委班子专题民主生活会查摆问题及整改措施
2014/09/27 职场文书
群众路线教育实践活动民主生活会个人检查对照思想汇报
2014/10/04 职场文书
2014大学生学生会工作总结
2014/12/19 职场文书
党员公开承诺书2015
2015/01/21 职场文书
赢在中国观后感
2015/06/02 职场文书
2017年寒假社区服务活动总结
2016/04/06 职场文书
Django+Nginx+uWSGI 定时任务的实现方法
2022/01/22 Python