SuperAPI AI 工具集

kubernetes-python

部署与运维

查看项目

更新于 10-15 11:13

技能介绍

用途

Kubernetes Python Client 是 Kubernetes 官方 Python 客户端库(由 SIG API Machinery 维护),提供对 Kubernetes API 的编程访问,用于自动化、自定义工具开发和应用集成。

主要能力

  • 完整 API 覆盖:支持所有 Kubernetes 资源类型。
  • 多种认证方式:本地 kubeconfig、集群内配置、指定 context。
  • 按资源类型划分的 API 客户端:
    • CoreV1Api:Pods、Services、ConfigMaps、Secrets、Namespaces、PVCs
    • AppsV1Api:Deployments、StatefulSets、DaemonSets、ReplicaSets
    • BatchV1Api:Jobs、CronJobs
    • NetworkingV1Api:Ingresses、NetworkPolicies
    • CustomObjectsApi:自定义资源(CRD)
  • 实时 watch/stream 能力,支持 ADDED、MODIFIED、DELETED、ERROR 事件类型。
  • 完整 CRD 支持。
  • 生产级模式:超时配置、大列表分页、服务端过滤、错误处理、幂等创建或更新。

使用方式

安装:

pip install kubernetes

基本用法:

from kubernetes import client, config

# 加载 kubeconfig
config.load_kube_config()

# 创建 API 客户端
v1 = client.CoreV1Api()

# 列出 Pod
pods = v1.list_pod_for_all_namespaces(limit=10)
for pod in pods.items:
    print(f"{pod.metadata.namespace}/{pod.metadata.name}")

客户端初始化模式:

  • 本地开发(使用 kubeconfig):config.load_kube_config()
  • 集群内(运行在 Kubernetes 中):config.load_incluster_config()
  • 指定 context:config.load_kube_config(context='production-cluster')

常见操作包括:创建 Deployment、读取资源(支持 label_selector 与 field_selector)、更新资源(patch 部分更新优先,replace 全量更新)、删除资源(可设置 grace_period_seconds)、错误处理(捕获 ApiException,按 status 判断 404/403 等)、幂等创建或更新模式、watch 资源变化、操作 ConfigMap 与 Secret(Secret 数据需 base64 编码)、操作自定义资源。

生产模式:

  • 超时配置:_request_timeout=10
  • 分页:使用 limit 与 _continue 令牌循环获取
  • 服务端过滤:使用 field_selector 而非客户端过滤

适用场景

  • 集群自动化管理与批量操作
  • 自定义运维工具与平台开发
  • 应用与 Kubernetes API 集成
  • 实时监控资源变化
  • 管理自定义资源(CRD)

限制与注意事项

  • 自动生成的代码,Python 风格较弱。
  • 在超大规模集群(3000+ 资源)中性能可能下降。
  • 无原生异步支持(可使用 kubernetes_asyncio 包)。
  • EKS 需要手动刷新令牌(15 分钟过期)。
  • 版本兼容性:客户端版本应与 Kubernetes 集群版本匹配(如 29.y.z 对应 K8s 1.29 完全一致,30.y.z 对应 K8s 1.30,31.y.z 对应 K8s 1.31;相邻版本多数 API 可用,部分新增或移除)。

安全最佳实践

  • 最小权限:应用绝不使用 cluster-admin。
  • RBAC:尽可能使用命名空间级 Roles 而非 ClusterRoles。
  • Secrets:不要记录 secret 数据,从环境变量加载凭据。
  • SSL 验证:生产环境始终验证 SSL(verify_ssl=True)。
  • 集群内配置:集群内应用使用 service account。

参考链接

  • GitHub:https://github.com/kubernetes-client/python
  • 文档:https://kubernetes.readthedocs.io/
  • PyPI:https://pypi.org/project/kubernetes/
  • 示例:https://github.com/kubernetes-client/python/tree/master/examples