支持kubernetes的python客户端库

pykubeks的Python项目详细描述


Pykubeks

CircleCIPyPI DownloadsPyPI VersionLicense

这是pykube的叉子 不再维护。如果你对谁带来的感兴趣 可爱的小图书馆走进世界,请查看The Kel Project

这个fork的原因是为了发布我为之编写的aws eks支持 最初的项目,在它被放弃之前。新名称pykubekspykubeEKS的端口。

python包的名称仍然相同,以简化“升级” 转到支持从客户端提供的用户凭据的新版本 凭证插件。见k8s documentation 详情。

功能

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

安装

要安装pykubeks,请使用pip:

pip install pykubeks

用法

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

importoperatorimportpykubeapi=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)

访问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": "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()

删除复制控制器:

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

httpie

pykube可以与httpie一起用于kubernetes命令行查询good。例如:

pip install httpie
http pykube://minikube/api/v1/services

上面的示例将构造对minikube上下文后面的集群的http请求,并 显示包含所有服务的响应。

要求

  • python 2.7或3.3+
  • 请求(包含在install_requires
  • pyyaml(包含在install_requires)中

许可证

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

贡献

通过对这个项目做出贡献,您就同意了Developer Certificate of Origin v1.1(也包括在dco.txt下的这个存储库中)。

Developer Certificate of Origin v1.1

行为准则

Contributor Covenant Code of Conduct

商业支持

本项目无商业支持。

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

推荐PyPI第三方库


热门话题
在java中的字符串字符下打印星号(*)   java在比较数据后得到错误的结果   java如何在使用JSP创建的网站中创建父子关系和处理?   java配置单元UDF:无法执行求值方法   java GAE项目Intellij远程调试在关闭时不释放端口   java按钮上的放大和缩小功能点击JfreeChart折线图?   java Selenium Chrome Web驱动程序SessionNotCreatedException   java由ADFactoryBuilder生成的线程工厂是线程安全的吗?   java将字符串[]传递给另一个类Android(使用intent)   我为什么要嘲笑java?   JavaLiferay门户不将对象从流程阶段发送到jsp   java我想在单击每个树节点时将要添加的信息放入jpanel jscrollpane中   在Java中模拟数组引用(即对引用的引用)的按引用传递   Jackson将JSON属性反序列化为不同的Java对象   java使用JSP/servlet在网页上显示Excel工作表?   仿射变换Java:使用仿射变换时游戏速度减慢   Servlet JBoss AS 7的java EJB注入   在Oracle数据库中使用Java的plsql   java管理Maven项目中的库依赖项   JavaEclipseLink(JPA)异常:复合主键@JoinColumn