跳转到主要内容

Kubernetes API库

项目描述

Test Codecov pre-commit.ci status Read the Docs EffVer Versioning PyPI Python Version Support Kubernetes Version Support PyPI - Wheel PyPI - License

为已经熟悉如何使用 kubectl 的人提供的一个简单、可扩展的Kubernetes Python客户端库。

亮点

  • kubectl 启发的API,学习曲线平缓。
  • 合理的默认值 以减少样板代码。
  • 不生成swagger代码,只有可读代码。
  • 同时提供标准API和 异步API,可用于与 asynciotrio 一起使用。
  • 客户端缓存 以减少API对象的传递。
  • 包含受 kubectl 启发的 实用工具和方法

快速入门

安装

$ pip install kr8s

示例

[!TIP] 查看完整的示例,包括 asyncio 示例,请参阅 示例文档

列出节点

打印出集群中所有节点的名称。

import kr8s

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

创建Pod

创建一个新的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()

缩放部署

将命名空间 kube-system 中的 metrics-server 部署扩展到 1 个副本。

from kr8s.objects import Deployment

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

按标签选择器列出 Pod。

获取所有命名空间中匹配标签选择器的所有 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 添加标签

向现有 Pod 添加标签 foo,值为 bar

from kr8s.objects import Pod

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

生成 Pod

使用几个关键字参数生成一个简单的 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 执行

在 Pod 中执行命令。

from kr8s.objects import Pod

pod = Pod.get("my-pod")

command = pod.exec(["uptime"])
print(command.stdout.decode())
# 13:49:05 up 23:03,  0 users,  load average: 0.66, 0.87, 0.85

端口映射 Pod

将端口映射到 Pod 作为后台任务/线程。

from kr8s.objects import Pod

pod = Pod.get("my-pod")
pf = pod.portforward(remote_port=1234, local_port=5678)

# Starts the port forward in a background thread
pf.start()

# Your other code goes here

# Optionally stop the port forward thread (it will exit with Python anyway)
pf.stop()

[!TIP] 查看完整的示例,包括 asyncio 示例,请参阅 示例文档

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

kr8s-0.17.4.tar.gz (2.9 MB 查看哈希值)

上传时间

构建分发

kr8s-0.17.4-py3-none-any.whl (70.6 kB 查看哈希值)

上传时间 Python 3

由以下支持

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