文档首页/ 华为云UCS/ 常见问题/ 集群联邦/ 联邦管理面创建HPA后分发到成员集群失败怎么办?
更新时间:2024-10-30 GMT+08:00

联邦管理面创建HPA后分发到成员集群失败怎么办?

问题背景

在集群联邦管理面创建HPA后,创建PropagationPolicy将其分发到版本低于v1.23的成员集群失败。

可能原因

当前,UCS集群联邦API Server版本为v1.25,因此HPA对象有autoscaling/v2和autoscaling/v1两个版本。然而,不论您创建的HPA版本为autoscaling/v2还是autoscaling/v1,联邦均会以autoscaling/v2版本进行分发。版本低于v1.23的集群不支持autoscaling/v2版本的HPA对象,因此HPA无法分发到该集群。查看HPA对应的resourceBinding,可以在其conditions中得到如下报错:cluster(s) did not have the API resource。

解决方案

您可以在分发HPA前,将成员集群版本升级至v1.23及以上的版本,该版本默认支持autoscaling/v2的HPA。

若您仍想分发autoscaling/v1版本的HPA到成员集群,您的PropagationPolicy对象中的resourceSelectors[i].apiVersion字段应配置为autoscaling/v2,如示例YAML所示。分发成功后,您可以在成员集群中查询到autoscaling/v1版本的HPA。

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: test-hpa
spec:
  maxReplicas: 5
  minReplicas: 1
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nginx
  targetCPUUtilizationPercentage: 10
---
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
  name: test-hpa-pp
spec:
  placement:
    clusterAffinity:
      clusterNames:
        - member1
  resourceSelectors:
    - apiVersion: autoscaling/v2
      kind: HorizontalPodAutoscaler
      name: test-hpa
      namespace: default