1 需求分析
接到一个需求,需要对deployment根据流量进行自动伸缩的操作。
原理:
根据metrics-server提供的监控数据,对pod进行分析,然后计算出最优的replicas,最后进行scale操作(replicas=最优replicas)
2 执行过程
如下程序是获取监控的数据
try:ret_metrics = self.api_client.call_api('/apis/custom.metrics.k8s.io/v1beta1/namespaces/' + namespace + '/pods/*/' + metricName + '/', 'GET',auth_settings=['BearerToken'], response_type='json', _preload_content=False)except Exception as e:logger.error(f"{str(e)}")return None
计算出最优replicas,然后执行scale操作
def patch_namespaced_deployment_scale_api(self, deployment_name, namespace, scale_replicas):body = {'api_version': 'autoscaling/v1', 'kind': 'Scale', 'spec': {'replicas': scale_replicas}}result = self.apis_api.patch_namespaced_deployment_scale(name=deployment_name, namespace=namespace,body=body).to_dict()return result
