一、安装

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

安装

  1. pip install kubernetes

二、认证

1、kubeconfig文件认证

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

  1. [root@k8s-m ~]# cp .kube/config kubeconfig.yaml
  2.  
  3. #使用
  4. from kubernetes import client, config
  5. config.kube_config.load_kube_config(config_file="/root/kubeconfig.yaml")

三、api使用

1、列出资源信息

  1. from kubernetes import client, config
  2. config.kube_config.load_kube_config(config_file="/root/kubeconfig.yaml")
  3.  
  4. #获取API的CoreV1Api版本对象
  5. v1 = client.CoreV1Api()
  6.  
  7. #列出 namespaces
  8. for ns in v1.list_namespace().items:
  9. print(ns.metadata.name)
  10.  
  11. #列出所有的services
  12. ret = v1.list_service_for_all_namespaces(watch=False)
  13. for i in ret.items:
  14. 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 ))
  15.  
  16. #列出所有的pod
  17. ret = v1.list_pod_for_all_namespaces(watch=False)
  18. for i in ret.items:
  19. print("%s\t%s\t%s" % (i.status.pod_ip, i.metadata.namespace, i.metadata.name))
  20.  
  21. #列出所有deploy
  22. ret = v1.list_deployments_for_all_namespaces(watch=False)
  23. for i in ret.items:
  24. print("%s\t%s\t%s" % (i.status.pod_ip, i.metadata.namespace, i.metadata.name))
  25.  
  26. ##列出其他资源和以上类似,不懂可以查看(kubectl api-resources)

2、创建k8s资源对象

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

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

  1. #创建deploy
  2. [root@k8s-m ~]# cat create_deploy.py
  3. from os import path
  4. import yaml
  5. from kubernetes import client, config
  6.  
  7. def main():
  8. config.load_kube_config()
  9.  
  10. with open(path.join(path.dirname(__file__), "/root/deploy.yaml")) as f:
  11. dep = yaml.safe_load(f)
  12. k8s_apps_v1 = client.AppsV1Api()
  13. resp = k8s_apps_v1.create_namespaced_deployment(
  14. body=dep, namespace="default")
  15. print("Deployment created. status='%s'" % resp.metadata.name)
  16. main()
  17.  
  18. [root@k8s-m ~]# kubectl get pod
  19. NAME READY STATUS RESTARTS AGE
  20. mydeploy-6946c867dc-bgcld / Running 40s
  21. mydeploy-6946c867dc-rdnvj / Running 40s
  22. [root@k8s-m ~]# kubectl get deploy
  23. NAME READY UP-TO-DATE AVAILABLE AGE
  24. mydeploy / 44s
  25.  
  26. #创建pod例子(其它资源得自己查源码自己找对应的API)
  27. [root@k8s-m ~]# cat create_pod.py
  28. from os import path
  29.  
  30. import yaml
  31.  
  32. from kubernetes import client, config
  33.  
  34. def main():
  35. config.load_kube_config()
  36.  
  37. with open(path.join(path.dirname(__file__), "/root/pod.yaml")) as f:
  38. dep = yaml.safe_load(f)
  39. k8s_core_v1 = client.CoreV1Api()
  40. resp = k8s_core_v1.create_namespaced_pod(
  41. body=dep, namespace="default")
  42. print("Pod created. status='%s'" % resp.metadata.name)
  43.  
  44. if __name__ == '__main__':
  45. main()
  46.  
  47. ##
  48. [root@k8s-m ~]# python3 create_pod.py
  49. Pod created. status='nginx-pod'
  50. [root@k8s-m ~]# kubectl get pod nginx-pod
  51. NAME READY STATUS RESTARTS AGE
  52. nginx-pod / Running 8s

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

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

  1. [root@k8s-m ~]# cat dp.py
  2. from os import path
  3. import yaml
  4. from kubernetes import client, config
  5.  
  6. def main():
  7. config.load_kube_config()
  8. k8s_core_v1 = client.CoreV1Api()
  9. resp = k8s_core_v1.delete_namespaced_pod(namespace="default",name='nginx-pod')
  10. print("delete Pod ")
  11.  
  12. [root@k8s-m ~]# python3 dp.py
  13. delete Pod

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

  1. #查看(read)
  2.  
  3. [root@k8s-m ~]# cat rp.py
  4. from os import path
  5. import yaml
  6. from kubernetes import client, config
  7.  
  8. def main():
  9. config.load_kube_config()
  10. k8s_core_v1 = client.CoreV1Api()
  11. resp = k8s_core_v1.read_namespaced_pod(namespace="default",name='nginx-pod')
  12. print("read Pod ")
  13. #详细信息
  14. print(resp)
  15. #指定信息
  16. print(resp.spec.containers[].image)
  17.  
  18. if __name__ == '__main__':
  19. main()
  20.  
  21. [root@k8s-m ~]# python3 rp.py |tail
  22. 'host_ip': '172.31.250.229',
  23. 'init_container_statuses': None,
  24. 'message': None,
  25. 'nominated_node_name': None,
  26. 'phase': 'Running',
  27. 'pod_ip': '10.244.167.134',
  28. 'qos_class': 'BestEffort',
  29. 'reason': None,
  30. 'start_time': datetime.datetime(, , , , , , tzinfo=tzutc())}}
  31. nginx

5、修改

  1. [root@k8s-m ~]# cat pp.py
  2. from os import path
  3. import yaml
  4. from kubernetes import client, config
  5.  
  6. def main():
  7. config.load_kube_config()
  8. k8s_core_v1 = client.CoreV1Api()
  9. old_resp = k8s_core_v1.read_namespaced_pod(namespace="default",name='nginx-pod')
  10. old_resp.spec.containers[].image = "nginx:alpine"
  11. #修改镜像
  12. new_resp = k8s_core_v1.patch_namespaced_pod(namespace="default",name='nginx-pod',body=old_resp)
  13. print(new_resp.spec.containers[].image)
  14. if __name__ == '__main__':
  15. main()
  16.  
  17. [root@k8s-m ~]# python3 pp.py
  18. nginx:alpine

python3 kubernetes api 使用的更多相关文章

  1. Centos7部署kubernetes API服务(四)

    1.准备软件包 [root@linux-node1 bin]# pwd /usr/local/src/kubernetes/server/bin [root@linux-node1 bin]# cp ...

  2. Gravitational Teleport 开源的通过ssh && kubernetes api 管理linux 服务器集群的网关

    Gravitational Teleport 是一个开源的通过ssh && kubernetes api 管理linux 服务器集群的网关 支持以下功能: 基于证书的身份认证 ssh ...

  3. kubernetes API Server 权限管理实践

    API Server权限控制方式介绍 API Server权限控制分为三种:Authentication(身份认证).Authorization(授权).AdmissionControl(准入控制). ...

  4. Kubernetes API server工作原理

    作为Kubernetes的使用者,每天用得最多的命令就是kubectl XXX了. kubectl其实就是一个控制台,主要提供的功能: 1. 提供Kubernetes集群管理的REST API接口,包 ...

  5. 资深专家深度剖析Kubernetes API Server第3章(共3章)

    在本系列的前两部分中我们介绍了API Server的总体流程,以及API对象如何存储到etcd中.在本文中我们将探讨如何扩展API资源. 在一开始的时候,扩展API资源的唯一方法是扩展相关API源代码 ...

  6. 资深专家深度剖析Kubernetes API Server第2章(共3章)

    欢迎来到深入学习Kubernetes API Server的系列文章的第二部分.在上一部分中我们对APIserver总体,相关术语及request请求流进行探讨说明.在本部分文章中,我们主要聚焦于探究 ...

  7. 资深专家深度剖析Kubernetes API Server第1章(共3章)

    欢迎来到深入学习Kubernetes API Server的系列文章,在本系列文章中我们将深入的探究Kubernetes API Server的相关实现.如果你对Kubernetes的内部实现机制比较 ...

  8. 深度剖析Kubernetes API Server三部曲 - part 3

    在本系列的前两部分中我们介绍了API Server的总体流程,以及API对象如何存储到etcd中.在本文中我们将探讨如何扩展API资源. 在一开始的时候,扩展API资源的唯一方法是扩展相关API源代码 ...

  9. 深度剖析Kubernetes API Server三部曲 - part 2

    欢迎来到深入学习Kubernetes API Server的系列文章的第二部分.在上一部分中我们对APIserver总体,相关术语及request请求流进行探讨说明.在本部分文章中,我们主要聚焦于探究 ...

随机推荐

  1. Could not find iPhone 6 simulator

    最近原来的老项目有点问题需要处理一下,运行启动命令,就报了如下错误,提示找不到iPhone 6 模拟器. react-native run-ios Owaiss-Mac:pdm owaisahmed$ ...

  2. 树 dfs暴力判环 题意转化

    以后还是要多做题啊 这一道题我把题目想的太简单了 用并查集做了一波 但是忘了一种情况 就是同一个树上可能会有环 这就不太对了 而且还不要忘了 一棵树的根节点是一个自环 也就是说这一题的答案就是    ...

  3. POJ Muddy Fields 泥泞的牧场 二分图

    Muddy Fields Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13235   Accepted: 4879 汪星人 ...

  4. flask部署深度学习模型

    flask部署深度学习模型 作为著名Python web框架之一的Flask,具有简单轻量.灵活.扩展丰富且上手难度低的特点,因此成为了机器学习和深度学习模型上线跑定时任务,提供API的首选框架. 众 ...

  5. js强制限制输入允许两位小数

    <input type="text" value="@item.CostCash.Value.ToString("#0.00")" c ...

  6. React Hooks 一步到位

    useState 用来声明状态变量. import React, { useState } from 'react'; // ... const [ count , setCount ] = useS ...

  7. restframework 认证、权限、频率组件

    一.认证 1.表的关系 class User(models.Model): name = models.CharField(max_length=32) pwd = models.CharField( ...

  8. Java入门 - 语言基础 - 22.异常处理

    原文地址:http://www.work100.net/training/java-exception.html 更多教程:光束云 - 免费课程 异常处理 序号 文内章节 视频 1 概述 2 Exce ...

  9. C#中TripleDES对应Java中的DESede即大家说的3DES,附C#及Java加解密结果一致的控制台程序例子

    直接上代码了. Java控制台代码: package Test; import java.security.Key; import javax.crypto.Cipher; import javax. ...

  10. golang 服务大量 CLOSE_WAIT 故障排查

    事故经过 排查 总结 事故经过 [2019-12-27 18:00 周五] 业务方突然找来说调用我们程序大量提示"触发限流",但是我们没有收到任何监控报警.紧急查看了下 Servi ...