AX 爱鲜报

kr8s:面向 kubectl 用户的 Python Kubernetes 客户端

kr8s 是一个「开箱即用」的 Python Kubernetes 客户端库,API 设计贴近 kubectl 使用习惯,内置同步与异步接口,支持 asyncio 与 trio,让熟悉 kubectl 的开发者几乎零成本上手。

爱鲜报评分

0.0

0 人评分

986

星数

否

中文

Python

主语言

是

活跃

28

贡献者

人工分析

EDITORIAL

推荐理由

kr8s 把 kubectl 的命令式体验搬进了 Python,get、create、scale、cordon、exec、portforward 等方法命名直观,学习曲线很浅。它不依赖 swagger 自动生成代码,全部为可读的手写实现,同时提供同步与 asyncio/trio 异步 API,适合脚本、运维工具与自动化平台。对于已经熟悉 kubectl 的开发者,几乎是「换个语言继续用」的体验。

适用场景

  • 编写 Kubernetes 运维脚本与自动化任务
  • 在 Python 服务中管理 Pod、Deployment 等资源
  • 基于 asyncio/trio 构建高并发集群操作工具
  • CI/CD 流水线中执行集群检查与变更
  • 本地开发调试时替代 kubectl 的部分操作

优点

  • API 高度贴近 kubectl,熟悉命令行即可快速上手
  • 同时提供同步与异步接口,兼容 asyncio 和 trio
  • 无 swagger 生成代码,源码可读、易扩展
  • 内置客户端缓存与合理默认值,减少样板代码
  • 提供 exec、portforward、cordon 等实用工具方法

缺点

  • 相比官方 kubernetes-client,生态与文档积累仍较少
  • 部分高级特性与 CRD 场景需自行验证兼容性
  • 异步与同步 API 混用时需注意线程与事件循环管理
  • 版本迭代较快,生产使用建议锁定版本
上手难度 入门

kr8s 是什么

kr8s 是一个面向 Kubernetes 的 Python 客户端库,目标是让已经会用 kubectl 的开发者几乎零成本迁移到 Python。它的 API 命名和操作方式都刻意贴近 kubectl,例如 get、create、scale、cordon、exec、portforward 等。

项目采用 BSD-3-Clause 许可,支持 Python 3.9 至 3.14,并覆盖多个 Kubernetes 版本。

核心特性

  • kubectl 风格 API:方法名与命令行操作一一对应,学习曲线平缓。
  • 合理默认值:自动处理认证与配置,减少样板代码。
  • 手写可读代码:不使用 swagger 自动生成,便于阅读和二次开发。
  • 同步 + 异步:同时提供标准 API 与基于 asyncio、trio 的异步 API。
  • 客户端缓存:避免到处传递 API 对象。
  • 内置实用工具:如 Pod 操作、端口转发、节点封锁等。

快速上手

安装:

$ pip install kr8s

列出集群中的所有节点:

import kr8s

for node in kr8s.get("nodes"):
    print(node.name)

创建一个 Pod:

from kr8s.objects import Pod

pod = Pod({
    "apiVersion": "v1",
    "kind": "Pod",
    "metadata": {"name": "my-pod"},
    "spec": {
        "containers": [{"name": "pause", "image": "gcr.io/google_containers/pause"}]
    },
})
pod.create()

扩缩容 Deployment:

from kr8s.objects import Deployment

deploy = Deployment.get("metrics-server", namespace="kube-system")
deploy.scale(1)

按标签筛选 Pod:

import kr8s

selector = {"component": "kube-scheduler"}
for pod in kr8s.get("pods", namespace=kr8s.ALL, label_selector=selector):
    print(pod.namespace, pod.name)

常用操作示例

给 Pod 打标签

from kr8s.objects import Pod

pod = Pod("kube-apiserver", namespace="kube-system")
pod.label({"foo": "bar"})

快速生成 Pod

from kr8s.objects import Pod

pod = Pod.gen(name="example-1", image="nginx:latest")
pod.create()

封锁节点

from kr8s.objects import Node

node = Node("k8s-node-1")
node.cordon()

在 Pod 中执行命令

from kr8s.objects import Pod

pod = Pod.get("my-pod")
command = pod.exec(["uptime"])
print(command.stdout.decode())

端口转发

from kr8s.objects import Pod

pod = Pod.get("my-pod")
pf = pod.portforward(remote_port=1234, local_port=5678)
pf.start()
# 其他逻辑
pf.stop()

适用人群

如果你已经在用 kubectl 管理集群,又希望用 Python 编写自动化脚本、运维工具或平台服务,kr8s 会是一个上手成本很低的选择。官方文档站点提供了完整的示例与 asyncio 用法说明。

评论

登录后才可评论与评分

0 条评论

  • 暂无评论,来写第一条吧。