Kubernetes的Python客户端库
项目描述
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 类(Deployment、Pod 等)加载到本地上下文中。
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-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 63f20f634bfcd83966edec32f892286f75dffb817a2c097434ecc039e558ec8f |
|
MD5 | c8bc02926e3c86876ba3af0fc16ed854 |
|
BLAKE2b-256 | 5bb94292259e80f93163d9ba0c69ccb3d44cf240acbdcb18adbc81a8f8d2e3d6 |