联邦管理面创建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