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内置函数的用法实例教程
Sep 08 Python
Python实现Windows上气泡提醒效果的方法
Jun 03 Python
python中Matplotlib实现绘制3D图的示例代码
Sep 04 Python
Python+matplotlib绘制不同大小和颜色散点图实例
Jan 19 Python
儿童编程python入门
May 08 Python
Python用于学习重要算法的模块pygorithm实例浅析
Aug 16 Python
python+opencv实现阈值分割
Dec 26 Python
python实现自动解数独小程序
Jan 21 Python
Python3字符串encode与decode的讲解
Apr 02 Python
Python3多线程版TCP端口扫描器
Aug 31 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
Nov 19 Python
Numpy 多维数据数组的实现
Jun 18 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实现ODBC数据分页显示一例
2006/10/09 PHP
PHP伪造referer实例代码
2008/09/20 PHP
php 清除网页病毒的方法
2008/12/05 PHP
php中转义mysql语句的实现代码
2011/06/24 PHP
JavaScript脚本语言在网页中的简单应用
2007/05/13 Javascript
创建一个复制UBB软件信息的链接或按钮的js代码
2008/01/06 Javascript
实现点击列表弹出列表索引的两种方式
2013/03/08 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
Node.js中的流(Stream)介绍
2015/03/30 Javascript
JavaScript判断前缀、后缀是否是空格的方法
2015/04/15 Javascript
JavaScript实现带缓冲效果的随屏滚动漂浮广告代码
2015/11/06 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法
2016/08/19 Javascript
jQuery禁用快捷键例如禁用F5刷新 禁用右键菜单等的简单实现
2016/08/31 Javascript
node.JS md5加密中文与php结果不一致的解决方法
2017/05/05 Javascript
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
Angular 4.0学习教程之架构详解
2017/09/12 Javascript
js + css实现标签内容切换功能(实例讲解)
2017/10/09 Javascript
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
vue中多个倒计时实现代码实例
2019/03/27 Javascript
jQuery实现弹幕特效
2019/11/29 jQuery
vue使用echarts实现水平柱形图实例
2020/09/09 Javascript
JPype实现在python中调用JAVA的实例
2017/07/19 Python
Django中的ajax请求
2018/10/19 Python
python操作kafka实践的示例代码
2019/06/19 Python
Python音频操作工具PyAudio上手教程详解
2019/06/26 Python
DJANGO-URL反向解析REVERSE实例讲解
2019/10/25 Python
利用Python小工具实现3秒钟将视频转换为音频
2019/10/29 Python
Python使用socket_TCP实现小文件下载功能
2020/10/09 Python
人事文员岗位职责
2014/02/16 职场文书
国贸专业自荐信范文
2014/03/02 职场文书
公司离职证明标准格式
2014/11/18 职场文书
家属慰问信
2015/02/14 职场文书
仓库统计员岗位职责
2015/04/14 职场文书
导游词之贵州织金洞
2019/10/12 职场文书
MySQL系列之三 基础篇
2021/07/02 MySQL