跳转到主要内容

Kubernetes的Python客户端库

项目描述

Build status Code Coverage Documentation PyPI version Python versions Apache License CalVer

Pykube (pykube-ng) 是一个轻量级的Python 3.6+ Kubernetes客户端库。

这是kelproject/pykube的一个分支,该分支已不再维护(存档)。以下是pykube的README原文

Kel是Eldarion, Inc.的一个开源平台即服务(PaaS),它通过整个生命周期(从开发到测试再到生产)轻松管理Web应用程序的部署和托管。它向Kubernetes添加了组件和工具,帮助开发者管理他们的应用程序基础设施。Kel基于Eldarion 7+年运行领先的Python和Django PaaS的经验。有关Kel的更多信息,请访问kelproject.com或关注我们的Twitter @projectkel

功能

  • 使用kubeconfig进行身份验证的requests HTTP接口

  • Python原生查询Kubernetes API对象

安装

要安装pykube,请使用pip

pip install pykube-ng

交互式控制台

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

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

用法

查询自定义命名空间中所有就绪的 Pod

import operator
import pykube

api = pykube.HTTPClient(pykube.KubeConfig.from_file())
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:
for watch_event in watch:
    print(watch_event.type) # 'ADDED', 'DELETED', 'MODIFIED'
    print(watch_event.object) # pykube.Job object

创建 Deployment

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()

删除 Deployment

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

要求

  • Python 3.6+

  • requests(包含在 install_requires 中)

  • PyYAML(包含在 install_requires 中)

本地开发

您可以在当前的 kubeconfig 上下文中运行 pykube,例如本地的 Minikube

poetry install
poetry 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(包含在此存储库中的 LICENSE 文件中)。

贡献

最简单的贡献方式是提供反馈!我们非常乐意听到您喜欢的内容以及您认为缺少的内容。创建一个问题或 在 Twitter 上 ping try_except_

欢迎提交 PR。请同时查看 带有“help wanted”标签的问题

行为准则

为了营造一个友好、包容且无骚扰的社区,本项目遵循 贡献者公约行为准则

项目详情


下载文件

下载适用于您的平台文件。如果您不确定要选择哪一个,请了解更多关于 安装包 的信息。

源分发

pykube-ng-23.6.0.tar.gz (26.1 KB 查看哈希值

上传时间

构建分发

pykube_ng-23.6.0-py3-none-any.whl (26.2 KB 查看哈希值

上传时间 Python 3

由以下支持