You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在运行的Python Flask实例中获取k8s Deployment的labels标签信息

实现方案

该需求完全可以实现,根据你的场景可以选择以下两种方案:


方案1:使用Downward API直接注入(最推荐,无额外依赖)

你当前配置中Deployment的metadata.labels.app和Pod模板的labels.app值完全一致,直接通过Kubernetes内置的Downward API把标签注入为容器环境变量即可,不需要调用K8s API。
修改你的Deployment配置的containers段,新增env配置:

containers:
  - image: gcr.io/github.com/my-company/my-app
    imagePullPolicy: IfNotPresent
    name: my-app-1
    # 新增环境变量注入配置
    env:
      - name: APP_NAME
        valueFrom:
          fieldRef:
            fieldPath: metadata.labels['app']
    resources:
      limits:
        cpu: 100m
        memory: 200Mi
      requests:
        cpu: 10m
        memory: 100Mi

重新apply配置后,Flask应用直接调用os.getenv("APP_NAME")就能拿到对应值,实现成本最低。


方案2:调用Kubernetes API查询(适用Pod标签与Deployment标签不一致的场景)

你之前用Python客户端查询失败,是因为没有给Pod配置API访问权限,也没有做Pod到所属Deployment的关联,按以下步骤配置即可:

  1. 先通过Downward API注入当前Pod的基础信息到环境变量
env:
  - name: POD_NAME
    valueFrom:
      fieldRef:
        fieldPath: metadata.name
  - name: POD_NAMESPACE
    valueFrom:
      fieldRef:
        fieldPath: metadata.namespace
  1. 配置RBAC权限,允许Pod查询相关资源
    创建对应的ServiceAccount、Role、RoleBinding:
apiVersion: v1
kind: ServiceAccount
metadata:
  name: app-reader
  namespace: production
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: production
  name: deployment-reader
rules:
- apiGroups: ["apps"]
  resources: ["replicasets", "deployments"]
  verbs: ["get", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-deployments
  namespace: production
subjects:
- kind: ServiceAccount
  name: app-reader
  namespace: production
roleRef:
  kind: Role
  name: deployment-reader
  apiGroup: rbac.authorization.k8s.io

然后在Deployment的spec.template.spec段新增serviceAccountName: app-reader,给Pod绑定该权限身份。
3. 代码查询逻辑

  • 读取环境变量拿到当前Pod的名称和命名空间
  • 查询当前Pod的metadata.ownerReferences字段,找到所属的ReplicaSet
  • 查询ReplicaSet的metadata.ownerReferences字段,找到所属的Deployment
  • 直接读取Deployment的metadata.labels.app值即可

内容的提问来源于stack exchange,提问作者FairPluto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:24:00