用于kubernetes的python客户端库

pykube-ng的Python项目详细描述


Build statusCode CoverageDocumentationPyPI versionPython versionsApache License

pykube(pykube ng)是一个用于kubernetes的轻量级python 3.6+客户端库。

这是kelproject/pykube的分叉,不再维护(存档)。这里是pykube自述文件的原始文本:

Kel is an open source Platform as a Service (PaaS) from Eldarion, Inc. that makes it easy to manage web application deployment and hosting through the entire lifecycle from development through testing to production. It adds components and tools on top of Kubernetes that help developers manage their application infrastructure. Kel builds on Eldarion’s 7+ years experience running one of the leading Python and Django PaaSes. For more information about Kel, see kelproject.com or follow us on Twitter @projectkel.

功能

  • 使用kubeconfig请求进行身份验证的http接口
  • kubernetes api对象的python本地查询

安装

要安装pykube,请使用pip:

pip install pykube-ng

交互式控制台

pykube库模块可以作为交互式控制台在本地运行,以进行快速探索。 它将自动加载~/.kube/config以提供api对象,并将pykube类(DeploymentPod,..)加载到本地上下文:

python3 -m pykube
>>> [d.name for d in Deployment.objects(api)]

用法

在自定义命名空间中查询所有就绪的播客:

importoperatorimportpykubeapi=pykube.HTTPClient(pykube.KubeConfig.from_file("~/.kube/config"))pods=pykube.Pod.objects(api).filter(namespace="gondor-system")ready_pods=filter(operator.attrgetter("ready"),pods)

访问kubernetes对象的任何属性:

pod=pykube.Pod.objects(api).filter(namespace="gondor-system").get(name="my-pod")pod.obj["spec"]["containers"][0]["image"]

选择器查询:

pods=pykube.Pod.objects(api).filter(namespace="gondor-system",selector={"gondor.io/name__in":{"api-web","api-worker"}},)pending_pods=pykube.objects.Pod.objects(api).filter(field_selector={"status.phase":"Pending"})

观看查询:

watch=pykube.Job.objects(api,namespace="gondor-system")watch=watch.filter(field_selector={"metadata.name":"my-job"}).watch()# watch is a generator:forwatch_eventinwatch:print(watch_event.type)# 'ADDED', 'DELETED', 'MODIFIED'print(watch_event.object)# pykube.Job object

创建展开:

obj={"apiVersion":"apps/v1","kind":"Deployment","metadata":{"name":"my-deploy","namespace":"gondor-system"},"spec":{"replicas":3,"selector":{"matchLabels":{"app":"nginx"}},"template":{"metadata":{"labels":{"app":"nginx"}},"spec":{"containers":[{"name":"nginx","image":"nginx","ports":[{"containerPort":80}]}]}}}}pykube.Deployment(api,obj).create()

删除展开:

obj={"apiVersion":"apps/v1","kind":"Deployment","metadata":{"name":"my-deploy","namespace":"gondor-system"}}pykube.Deployment(api,obj).delete()

检查服务器版本:

api=pykube.HTTPClient(pykube.KubeConfig.from_file())api.version

要求

  • Python3.6+
  • 请求(包含在install_requires中)
  • pyyaml(包含在install_requires中)

地方发展

您可以对当前的kubeconfig上下文运行pykube,例如localMinikube

pipenv install --dev
pipenv run python3
>>> import pykube
>>> config= pykube.KubeConfig.from_file()
>>> api= pykube.HTTPClient(config)
>>> list(pykube.Deployment.objects(api))

运行pep8(flake8)检查和单元测试,包括覆盖率报告:

make test

许可证

此项目中的代码是根据apache许可证2.0版授权的 (根据许可证包含在此存储库中)。

贡献

最简单的贡献方式就是提供反馈!我们很想知道你喜欢什么,你认为缺少什么。 创建问题或ping try_except_ on Twitter

欢迎使用减贫战略。也请看一下issues labeled with “help wanted”

行为准则

为了培养一个友好、包容和无骚扰的社区,这个项目遵循Contributor Covenant Code of Conduct

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
为@Nonnull注释参数编写java单元测试   对于JAVA,如何从它自己的类调用插入排序来将数组分类到一个单独的类中?   Java中嵌套SQL查询的字符串解析   java在所有带有特定注释的方法上调用带注释的方面   在Java中将base64转换为PDF   无法在Android上强制转换java getApplicationContext()   雅加达ee Java ee:如何获取我的应用程序的URL?   IntelliJ:如何导入的文件夹。java文件作为库?   多线程Java(FX)在播放一种声音的同时,播放另一种声音   网络爬虫我需要将proto3版本中protobuf生成的java代码添加到nutch 1.7中   使用JAXRS注释资源的java Restlet客户端   java如何查找给定月份的日期范围   java Minecraft Bukkit插件:我的小游戏传送机不工作   Java Excel搜索和数组列表工作不正常