Kubernetes版本:
v1.15.2
场景显示:
kubernetes v1.15.2已添加一些新的api版本,例如,自动缩放组中的autoscaling/v2beta2
。但是在阅读了Kubernetes代码src\k8s.io\kubernetes\pkg\controller\podautoscaler\
中的HorizontalController结构之后,HorizontalController中的所有成员都是autoscaling/v1
。
type HorizontalController struct {
scaleNamespacer scaleclient.ScalesGetter ==> autoscaling/v1
hpaNamespacer autoscalingclient.HorizontalPodAutoscalersGetter ==> autoscaling/v1
mapper apimeta.RESTMapper
replicaCalc *ReplicaCalculator
eventRecorder record.EventRecorder
downscaleStabilisationWindow time.Duration
// hpaLister is able to list/get HPAs from the shared cache from the informer passed in to
// NewHorizontalController.
hpaLister autoscalinglisters.HorizontalPodAutoscalerLister ==> autoscaling/v1
hpaListerSynced cache.InformerSynced ==> autoscaling/v1
// podLister is able to list/get Pods from the shared cache from the informer passed in to
// NewHorizontalController.
podLister corelisters.PodLister
podListerSynced cache.InformerSynced
// Controllers that need to be synced
queue workqueue.RateLimitingInterface
// Latest unstabilized recommendations for each autoscaler.
recommendations map[string][]timestampedRecommendation
}
那么kubernetes如何使用HorizontalController维护autoscaling / v2beta2资源?
在正式的kubernetes documentation中,您可以找到以下信息:
API对象
Horizontal Pod Autoscaler是Kubernetes
autoscaling
API组中的API资源。当前的稳定版本仅包含对CPU自动缩放的支持,可以在autoscaling/v1
API版本中找到。测试版包含对内存扩展和自定义指标的支持,可以在
autoscaling/v2beta2
中找到。使用autoscaling/v2beta2
时,autoscaling/v1
中引入的新字段将保留为注释。有关API对象的更多详细信息,请参见HorizontalPodAutoscaler Object。
还根据kubernetes关于API版本控制下API overview的文档:
API版本控制
为了消除字段或重组资源表示,Kubernetes支持多个API版本,每个版本使用不同的API路径。例如:
/api/v1
或/apis/extensions/v1beta1
。版本是在API级别而不是资源或字段级别为:
- 确保API呈现系统资源和行为的清晰一致的视图。
- 启用对寿命终止和/或实验性API的控制访问。
JSON和Protobuf序列化架构遵循相同的准则用于模式更改。以下描述涵盖了两种格式。
因此,您可以找到autoscaling
的所有api版本,例如v2beta2
下的kubernetes/pkg/apis/autoscaling/。
例如,使用HTTP GET
将是这样的:GET /apis/autoscaling/v2beta2