跳转到主要内容

Kubernetes的Python客户端库

项目描述

http://slack.kelproject.com/badge.svg https://img.shields.io/travis/kelproject/pykube.svg https://img.shields.io/pypi/dm/pykube.svg https://img.shields.io/pypi/v/pykube.svg https://img.shields.io/badge/license-apache-blue.svg

Kubernetes的Python客户端库

https://storage.googleapis.com/kel-assets/kel_full-02_200.jpg

Kel是Eldarion, Inc.的一个开源平台即服务(PaaS),它通过整个生命周期轻松管理Web应用程序的部署和托管,从开发到测试再到生产。它为Kubernetes添加组件和工具,帮助开发者管理应用程序基础设施。Kel建立在Eldarion运行领先的Python和Django PaaS的7+年经验之上。

有关Kel的更多信息,请访问kelproject.com,关注我们的Twitter @projectkel,并加入我们的Slack团队

功能

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

  • 原生Python查询Kubernetes API对象

安装

要安装pykube,请使用pip

pip install pykube

用法

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

import operator
import pykube

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

选择器查询

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")
    .filter(field_selector={"metadata.name":"my-job"})
    .watch()

# watch is a generator:
for watch_event in watch:
    print(watch.type) # 'ADDED', 'DELETED', 'MODIFIED'
    print(watch.object) # pykube.Job object

创建ReplicationController

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

删除ReplicationController

obj = {
    "apiVersion": "v1",
    "kind": "ReplicationController",
    "metadata": {
        "name": "my-rc",
        "namespace": "gondor-system"
    }
}
pykube.ReplicationController(api, obj).delete()

检查服务器版本

api = pykube.HTTPClient(pykube.KubeConfig.from_file("/Users/<username>/.kube/config"))
api.version

需求

  • Python 2.7或3.3+

  • requests(包含在install_requires中)

  • PyYAML(包含在install_requires中)

许可证

此项目中包含的代码根据Apache许可证版本2.0许可(包含在此存储库中的LICENSE)。

贡献

通过向此项目做出贡献,您同意开发者起源证书v1.1(也包含在此存储库中的DCO.txt)。

行为准则

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

商业支持

通过Eldarion提供Kel的商业支持,请联系info@eldarion.com

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面