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的Twisted框架的核心特性
May 25 Python
Python爬虫DNS解析缓存方法实例分析
Jun 02 Python
python开启摄像头以及深度学习实现目标检测方法
Aug 03 Python
python 拼接文件路径的方法
Oct 23 Python
python实现海螺图片的方法示例
May 12 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
Aug 02 Python
如何在Django配置文件里配置session链接
Aug 06 Python
Python操作Jira库常用方法解析
Apr 10 Python
TensorFLow 数学运算的示例代码
Apr 21 Python
Matplotlib中rcParams使用方法
Jan 05 Python
Python之Sklearn使用入门教程
Feb 19 Python
python实现Thrift服务端的方法
Apr 20 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采用curl模仿登录人人网发布动态的方法
2014/11/07 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
解析js如何获取当前url中的参数值并复制给input
2013/06/23 Javascript
javascript:window.open弹出窗口的位置问题
2014/03/18 Javascript
JS控制输入框内字符串长度
2014/05/21 Javascript
微信小程序 Flex布局详解
2016/10/09 Javascript
JavaScript prototype属性详解
2016/10/25 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
配置nodejs环境的方法
2017/05/13 NodeJs
vue引入jq插件的实例讲解
2017/09/12 Javascript
vuex 使用文档小结篇
2018/01/11 Javascript
微信小程序用户信息encryptedData详解
2018/08/24 Javascript
js实现图片推拉门效果代码实例
2019/05/18 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
vue 实现用户登录方式的切换功能
2020/04/14 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
2020/08/08 Javascript
使用Vue-scroller页面input框不能触发滑动的问题及解决方法
2020/08/08 Javascript
Python使用Supervisor来管理进程的方法
2015/05/28 Python
在Python的Django框架中为代码添加注释的方法
2015/07/16 Python
Python的消息队列包SnakeMQ使用初探
2016/06/29 Python
Python3.5 创建文件的简单实例
2018/04/26 Python
对python3标准库httpclient的使用详解
2018/12/18 Python
pycharm配置pyqt5-tools开发环境的方法步骤
2019/02/11 Python
python协程之动态添加任务的方法
2019/02/19 Python
python开启debug模式的方法
2019/06/27 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
Python3 使用pillow库生成随机验证码
2019/08/26 Python
使用python制作一个解压缩软件
2019/11/13 Python
利用CSS3的transition属性实现滑动效果
2015/08/05 HTML / CSS
什么是规则表达式
2012/05/03 面试题
品管员岗位职责
2013/11/10 职场文书
工程业务员岗位职责
2013/12/31 职场文书
文明家庭先进事迹材
2014/01/27 职场文书
《仙剑客栈2》第一弹正式宣传片公开 年内发售
2022/04/07 其他游戏