Kubernetes(以下简称k8s)是一个用于自动化部署、扩展和管理容器化应用的开源系统。
图片来源于网络
Python的k8s客户端是以python包的形式提供的,开源地址(https://github.com/kubernetes-client/python),可以通过pip命令下载安装。
从源码安装
git clone –-recursive https://github.com /kubernetes-client/python.git cd python python setup.py install
配置kubernetes api
//导入包:
from kubernetes import client
from pprint import pprint //优化输出
k8s_api_url="YOUR_API_URL"
k8s_api_token="YOUR_API_TOKEN"
k8s_api_conf=kubernetes.client.Configuration()
k8s_api_conf.host=k8s_api_url //配置url
k8s_api_conf.verify_ssl=False //关闭SSL验证,可选择
k8s_api_conf.api_key = {"authorization": "Bearer " + k8s_api_token} //配置token
k8s_api_client=client.ApiClient(k8s_api_conf) //创建客户端
常用资源接口实例化
kubernetes的api接口极为丰富,本次仅介绍常用操作和会涉及到的类和方法,全部的接口文档可以在官方API文档(https://github.com/kubernetes-client/python/blob/master/kubernetes/README.md)处找到。
namespace、pod、node和service相关,使用CoreV1Api类实例
k8s_api_client_core=client.CoreV1Api(k8s_api_client
deployment相关,使用AppsV1Api类实例
k8s_api_client_apps=client.AppsV1Api(k8s_api_client
ingress相关,使用NetworkingV1beta1Api类实例
k8s_api_client_networking=client.NetworkingV1beta1Api(k8s_api_client)
常用操作
1)查看namespace
使用list_namespace方法
//可选参数:
//pretty str 如果值为"true",则美化输出
//limit int 限制输出数量
//timeout_second int 超时时间
try:
api_response=k8s_api_client_core.list_namespace(pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
//使用read_namespace方法
//必要参数:
//name str namespace名
//可选参数:
//pretty str 如果值为"true",则美化输出
try:
api_response=k8s_api_client_core.read_namespace(name,pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
2)创建namespace
//使用create_namespace方法
//必要参数:
//body V1Namespace 创建的namespace描述
//可选参数:
//pretty str 如果值为"true",则美化输出
//dry_run str 如果存在此参所则表示试运行,有效值为"ALL"
//field_manager str 该参数是与进行这些更改的参与者或实体关联的名称。该值的长度必须小于或等于128个字符,并且仅包含可打印字符
body=client.V1Namespace() //创建body
try:
api_response=k8s_api_client_core.create_namespace(body,pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
3)删除namespace
api_response=k8s_api_client_core.delete_namespace(name,pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
4)查看pod
//使用list_namespaced_pod方法
//必要参数:
//namespace str namespace名
//可选参数:
//pretty str 如果值为"true",则美化输出
//limit int 限制输出数量
//timeout_second int 超时时间
try:
api_response=k8s_api_client_core.list_namespaced_pod(namespace,pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
api_response=k8s_api_client_core.list_pod_for_all_namespaces(pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
api_response=k8s_api_client_core.read_namespaced_pod(name,namespace,pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
5)查看node
//使用list_node方法
//可选参数:
//pretty str 如果值为"true",则美化输出
//limit int 限制输出数量
//timeout_second int 超时时间
try:
api_response=k8s_api_client_core.list_node(pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
api_response=k8s_api_client_core.read_node(name,pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
6)查看deployment
api_response=k8s_api_client_apps.list_namespaced_deployment(namespace,pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
api_response=k8s_api_client_apps.list_deployment_for_all_namespaces(pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
//使用read_namespaced_deployment方法
//必要参数:
//name str deployment名
//namespace str namespace名
//可选参数:
//pretty str 如果值为"true",则美化输出
try:
api_response=k8s_api_client_apps.read_namespaced_deployment(name,namespace,pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
7)删除deployment
api_response=k8s_api_client_apps.delete_namespaced_deployment(name,namespace,pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
8)删除pod/重启pod
api_response=k8s_api_client_core.delete_namespaced_pod(name,namespace,pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
9)修改deployment配置
//先获取当前的deployment配置
body=k8s_api_client_apps.read_namespaced_deployment(name,namespace,pretty="true")
//修改deployment
some_change()
//替换deployment配置
api_response=k8s_api_client_apps.replace_namespaced_deployment(name,namespace,body,pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129389.html
摘要:并且由外部控制器负责将资源转移到这一状态。在最后一个参数,我们传递了个回调函数和。这些回调函数具有实际的逻辑,并且在节点上的镜像占用存储发生改变时触发。一旦启动,将会开始对和的监控,并且调用回调函数。 Rancher Labs首席软件工程师Alena Prokharchyk受邀在2017年12月6-8日的CNCF主办的Kubernetes领域顶级盛会KubeCon + CloudNat...
摘要:将用户命令通过接口传送给,从而进行资源的增删改等操作。要使用编写应用程序,当下大多语言都可以很方便地去实现请求来操作的接口从而控制和查询资源,但本文主要是利用已有的客户端来更加优雅地实现的资源控制。 showImg(https://segmentfault.com/img/remote/1460000013517345); 【利用K8S技术栈打造个人私有云系列文章目录】 利用K8S...
摘要:将用户命令通过接口传送给,从而进行资源的增删改等操作。要使用编写应用程序,当下大多语言都可以很方便地去实现请求来操作的接口从而控制和查询资源,但本文主要是利用已有的客户端来更加优雅地实现的资源控制。 showImg(https://segmentfault.com/img/remote/1460000013517345); 【利用K8S技术栈打造个人私有云系列文章目录】 利用K8S...
阅读 1236·2023-01-11 13:20
阅读 1543·2023-01-11 13:20
阅读 996·2023-01-11 13:20
阅读 1654·2023-01-11 13:20
阅读 3958·2023-01-11 13:20
阅读 2456·2023-01-11 13:20
阅读 1290·2023-01-11 13:20
阅读 3456·2023-01-11 13:20