支持kubernetes的python客户端库
pykubeks的Python项目详细描述
Pykubeks
这是pykube的叉子 不再维护。如果你对谁带来的感兴趣 可爱的小图书馆走进世界,请查看The Kel Project。
这个fork的原因是为了发布我为之编写的aws eks支持
最初的项目,在它被放弃之前。新名称pykubeks
是pykube
和EKS
的端口。
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
商业支持
本项目无商业支持。