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

Flink Kubernetes部署HPA报错:无法获取目标规模,请求技术协助

问题场景

已通过以下YAML部署Flink有状态应用,作业运行正常:

apiVersion: flink.apache.org/v1beta1
kind: FlinkDeployment
metadata:
  name: operational-reporting-15gb
spec:
  image:.azurecr.io/stateful-app-v2
  flinkVersion: v1_15
  flinkConfiguration:
    taskmanager.numberOfTaskSlots: "2"
    state.savepoints.dir: abfs://flinktest@.dfs.core.windows.net/savepoints.v2
    state.checkpoints.dir: abfs://flinktest@.dfs.core.windows.net/checkpoints.v2
    high-availability: org.apache.flink.kubernetes.highavailability.KubernetesHaServicesFactory
    high-availability.storageDir: abfs://flinktest@.dfs.core.windows.net/ha.v2
  serviceAccount: flink
  jobManager:
    resource:
      memory: "15360m"
      cpu: 2
  taskManager:
    resource:
      memory: "15360m"
      cpu: 3
  podTemplate:
    spec:
      containers:
        - name: flink-main-container
          volumeMounts:
            - mountPath: /flink-data
              name: flink-volume
      volumes:
        - name: flink-volume
          emptyDir: {}
  job:
    jarURI: local:///opt/operationalReporting.jar
    parallelism: 1
    upgradeMode: savepoint
    state: running

为实现自动扩缩容创建了如下HPA:

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: basic-hpa
  namespace: default
spec:
  minReplicas: 1
  maxReplicas: 15
  metrics:
  - type: Resource
    resource:
      name: memory
      target:
        type: Utilization
        averageValue: 100m
  scaleTargetRef:
    apiVersion: flink.apache.org/v1beta1
    kind: FlinkDeployment
    name: operational-reporting-15gb

但HPA状态报错:

Type Status Reason Message

AbleToScale False FailedGetScale the HPA controller was unable to get the target's current scale: flinkdeployments.flink.apache.org "operational-reporting-15gb" not found

Events:
Type Reason Age From Message

Warning FailedGetScale 4m4s (x121 over 34m) horizontal-pod-autoscaler flinkdeployments.flink.apache.org "operational-reporting-15gb" not found

HPA目标状态显示UNKNOWN,以下是排查步骤:

排查步骤

  • 检查命名空间一致性
    HPA明确指定了namespace: default,先确认FlinkDeployment是否部署在default命名空间:

    kubectl get flinkdeployments.flink.apache.org operational-reporting-15gb -n default
    

    如果返回NotFound,说明FlinkDeployment在其他命名空间,执行以下命令查找其所在空间:

    kubectl get flinkdeployments.flink.apache.org operational-reporting-15gb --all-namespaces
    

    找到后修改HPA的metadata.namespace为对应命名空间即可。

  • 确认Flink CRD是否正确安装
    HPA需要识别FlinkDeployment自定义资源,检查CRD是否存在:

    kubectl get crd flinkdeployments.flink.apache.org
    

    如果CRD不存在,需重新安装对应Flink 1.15版本的Kubernetes Operator,确保CRD被正确部署。

  • 核对资源名称拼写
    检查HPA的scaleTargetRef.name与FlinkDeployment的metadata.name是否完全一致,注意大小写、连字符等细节,避免拼写错误。

  • 验证API版本与Operator兼容性
    确认集群支持autoscaling/v2版本的HPA(Kubernetes 1.23+默认支持),同时检查Flink Kubernetes Operator版本是否兼容Flink 1.15且支持HPA扩缩容(Operator 1.1.x及以上版本支持该功能)。

  • 检查HPA控制器的RBAC权限
    HPA控制器需要具备获取FlinkDeployment资源的权限,确认其使用的ServiceAccount(默认在kube-system命名空间下的horizontal-pod-autoscaler)拥有flinkdeployments.flink.apache.org的get、list权限。可通过查看对应的ClusterRole或Role规则确认:

    kubectl describe clusterrole <hpa-cluster-role-name> | grep flinkdeployments
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 15:45:33