k8s 自定义HPA指标-container 网络流量
作者:互联网
除了基于 CPU 和内存来进行自动扩缩容之外,我们还可以根据自定义的监控指标来进行。这个我们就需要使用 Prometheus Adapter,Prometheus 用于监控应用的负载和集群本身的各种指标,Prometheus Adapter 可以帮我们使用 Prometheus 收集的指标并使用它们来制定扩展策略,这些指标都是通过 APIServer 暴露的,而且 HPA 资源对象也可以很轻易的直接使用。下面直接说如何配置使用容器的网络出入流量进配置HPA。
1、k8s 集群配置prometheus监控,本司采用rancher管理的k8s集群,在rancher中web直接配置就可完成,此处不再赘述。
2、为prometheus配置一个可以访问的域名,后面 prometheus-adapter 需要调用。
3、配置 prometheus-adapter
$ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts $ helm repo update $ helm install --namespace cattle-prometheus --name prometheus-adapter prometheus-community/prometheus-adapter --set prometheus.url=http://demo.prome.com --set prometheus.port=80 --set logLevel=6
4、检查配置是否生效
kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1|jq . # 输出如下内容 { "kind": "APIResourceList", "apiVersion": "v1", "groupVersion": "custom.metrics.k8s.io/v1beta1", "resources": [ { "name": "nodes/nginx_ingress_controller_nginx_process_virtual_memory_bytes", "singularName": "", "namespaced": false, "kind": "MetricValueList", "verbs": [ "get" ] }, { "name": "pods/alertmanager_http_response_size_bytes_bucket", "singularName": "", "namespaced": true, "kind": "MetricValueList", "verbs": [ "get" ] }, { "name": "jobs.batch/alertmanager_oversize_gossip_message_duration_seconds_bucket", "singularName": "", "namespaced": true, "kind": "MetricValueList", "verbs": [ "get" ] } ......
5、 修改 prometheus-adapter configmap配置文件,新增如下信息:
- seriesQuery: 'container_network_receive_bytes_total{namespace!="",pod_name!=""}' resources: overrides: namespace: {resource: "namespace"} pod_name: {resource: "pod"} name: matches: "^(.*)" as: "container_network_receive_bytes_total_3m" metricsQuery: 'sum(rate(<<.Series>>{<<.LabelMatchers>>}[3m])) by (<<.GroupBy>>)' - seriesQuery: 'container_network_transmit_bytes_total{namespace!="",pod_name!=""}' resources: overrides: namespace: {resource: "namespace"} pod_name: {resource: "pod"} name: matches: "^(.*)" as: "container_network_transmit_bytes_total_3m" metricsQuery: 'sum(rate(<<.Series>>{<<.LabelMatchers>>}[3m])) by (<<.GroupBy>>)'
6、配置HPA
保存后:
如上图,保存后 "000m" 会被省略掉。m 代表毫秒,m前面是数字是字节。
至此,配置完成。
7、HPA 算法
https://zhuanlan.zhihu.com/p/245208287
标签:container,name,自定义,--,bytes,namespace,网络流量,prometheus,pod 来源: https://www.cnblogs.com/cptao/p/16358954.html