Kubernetes 如何获取HPA可用的指标列表?
我有包含GKE应用程序的GCP群集: 我想使用 基于 能够从中读取度量 metrics.k8s.io资源指标 custom.metrics.k8s.iocustom metrics external.metrics.k8s.ioexternal metrics 我如何检查可用的指标?我怎么能自己尝试这个API呢?有可能吗 附笔。 根据建议的答案,我执行了以下命令:Kubernetes 如何获取HPA可用的指标列表?,kubernetes,google-cloud-platform,horizontal-scaling,hpa,Kubernetes,Google Cloud Platform,Horizontal Scaling,Hpa,我有包含GKE应用程序的GCP群集: 我想使用 基于 能够从中读取度量 metrics.k8s.io资源指标 custom.metrics.k8s.iocustom metrics external.metrics.k8s.ioexternal metrics 我如何检查可用的指标?我怎么能自己尝试这个API呢?有可能吗 附笔。 根据建议的答案,我执行了以下命令: kubectl get --raw https://MY-KUBE-APISERVER-IP:6443/apis/metrics
kubectl get --raw https://MY-KUBE-APISERVER-IP:6443/apis/metrics.k8s.io/v1beta1/namespaces/default/pods
答复是:
{
"items": [
{
"metadata": {
"name": "prometheus-adapter-69fcdd56bc-2plh7",
"namespace": "default",
"selfLink": "/\r\napis/metrics.k8s.io/v1beta1/namespaces/default/pods/prometheus-adapter-69fcdd56bc-2plh7",
"creationTimestamp": "2020-02-05T10:56:02Z"
},
"timestamp": "2020-02-05T10:55:22Z",
"window": "30s",
"containers": [
{
"name": "prometheus-adapter",
"usage": {
"cpu": "15\r\n31939n",
"memory": "10408Ki"
}
}
]
},
{
"metadata": {
"name": "stackdriver-exporter-76fdbc9d8f-c285l",
"namespace": "default",
"selfLink": "/apis/metrics.k8s.io/v1beta1/namespaces/default/pods/stackdriver-exporter-76fdbc9d8f-c285l",
"creationTimestamp": "2020-0\r\n2-05T10:56:02Z"
},
"timestamp": "2020-02-05T10:55:22Z",
"window": "30s",
"containers": [
{
"name": "stackdriver-exporter",
"usage": {
"cpu": "79340n",
"memory": "2000Ki"
}
}
]
}
],
"kind": "PodMetricsList",
"apiVersion": "metrics.k8s.io/v1beta1",
"metadata": {
"selfLink": "/apis/metrics.k8s.io/v1beta1/namespaces/default/pods"
}
}
$ kubectl top pods
NAME CPU(cores) MEMORY(bytes)
prometheus-adapter-69fcdd56bc-2plh7 2m 10Mi
stackdriver-exporter-76fdbc9d8f-c285l 1m 1Mi
但我仍然看不到HPA的所有可用指标。metrics server通过以下API公开指标 /节点-所有节点度量;类型[]节点矩阵 /nodes/{node}-指定节点的度量;类型节点矩阵 /namespaces/{namespace}/pods-命名空间中的所有pod度量 支持所有名称空间;类型[]PodMetrics /namespaces/{namespace}/pods/{pod}-指定pod的度量; 类型度量 例如,您可以查看以下可用指标
$ kubectl get --raw https://KUBE-APISERVER-IP:6443/apis/metrics.k8s.io/v1beta1
{
"kind": "APIResourceList",
"apiVersion": "v1",
"groupVersion": "metrics.k8s.io/v1beta1",
"resources": [
{
"name": "nodes",
"singularName": "",
"namespaced": false,
"kind": "NodeMetrics",
"verbs": [
"get",
"list"
]
},
{
"name": "pods",
"singularName": "",
"namespaced": true,
"kind": "PodMetrics",
"verbs": [
"get",
"list"
]
}
]
}
$ kubectl get --raw https://KUBE-APISERVER-IP:6443/apis/metrics.k8s.io/v1beta1/namespaces/default/pods
{
"kind": "PodMetricsList",
"apiVersion": "metrics.k8s.io/v1beta1",
"metadata": {
"selfLink": "/apis/metrics.k8s.io/v1beta1/namespaces/default/pods"
},
"items": []
}
$ kubectl get --raw https://KUBE-APISERVER-IP:6443/apis/metrics.k8s.io/v1beta1/namespaces/kube-system/pods
{
"kind": "PodMetricsList",
"apiVersion": "metrics.k8s.io/v1beta1",
"metadata": {
"selfLink": "/apis/metrics.k8s.io/v1beta1/namespaces/kube-system/pods"
},
"items": [
{
"metadata": {
"name": "coredns-bcccf59f-jfl6x",
"namespace": "kube-system",
"selfLink": "/apis/metrics.k8s.io/v1beta1/namespaces/kube-system/pods/coredns-bcccf59f-jfl6x",
"creationTimestamp": "2021-02-17T20:31:29Z"
},
"timestamp": "2021-02-17T20:30:27Z",
"window": "30s",
"containers": [
{
"name": "coredns",
"usage": {
"cpu": "1891053n",
"memory": "8036Ki"
}
}
]
},
{
"metadata": {
"name": "coredns-bcccf59f-vmfvv",
"namespace": "kube-system",
"selfLink": "/apis/metrics.k8s.io/v1beta1/namespaces/kube-system/pods/coredns-bcccf59f-vmfvv",
"creationTimestamp": "2021-02-17T20:31:29Z"
},
"timestamp": "2021-02-17T20:30:25Z",
"window": "30s",
"containers": [
{
"name": "coredns",
"usage": {
"cpu": "1869226n",
"memory": "8096Ki"
}
}
]
}
]
}
您还可以使用命令kubectl top pods,该命令在内部调用上述API
自定义指标
这些由供应商开发的适配器提供,可用的度量标准取决于适配器。一旦知道度量名称,就可以使用它来访问它
您可以按如下所示查看可用指标并获取指标名称
kubectl get --raw https://KUBE-APISERVER-IP:6443/apis/custom.metrics.k8s.io/v1beta1
kubectl get --raw https://KUBE-APISERVER-IP:6443/apis/external.metrics.k8s.io/v1beta1
外部指标
这些由供应商开发的适配器提供,可用的度量标准取决于适配器。一旦知道度量名称,就可以使用它来访问它
您可以按如下所示查看可用指标并获取指标名称
kubectl get --raw https://KUBE-APISERVER-IP:6443/apis/custom.metrics.k8s.io/v1beta1
kubectl get --raw https://KUBE-APISERVER-IP:6443/apis/external.metrics.k8s.io/v1beta1
编辑:
您已经有了Prometheus适配器,但是如果度量没有作为HPA可使用的自定义度量公开,那么您需要公开所需的度量。请参阅此说明。度量服务器通过以下API公开度量 /节点-所有节点度量;类型[]节点矩阵 /nodes/{node}-指定节点的度量;类型节点矩阵 /namespaces/{namespace}/pods-命名空间中的所有pod度量 支持所有名称空间;类型[]PodMetrics /namespaces/{namespace}/pods/{pod}-指定pod的度量; 类型度量 例如,您可以查看以下可用指标
$ kubectl get --raw https://KUBE-APISERVER-IP:6443/apis/metrics.k8s.io/v1beta1
{
"kind": "APIResourceList",
"apiVersion": "v1",
"groupVersion": "metrics.k8s.io/v1beta1",
"resources": [
{
"name": "nodes",
"singularName": "",
"namespaced": false,
"kind": "NodeMetrics",
"verbs": [
"get",
"list"
]
},
{
"name": "pods",
"singularName": "",
"namespaced": true,
"kind": "PodMetrics",
"verbs": [
"get",
"list"
]
}
]
}
$ kubectl get --raw https://KUBE-APISERVER-IP:6443/apis/metrics.k8s.io/v1beta1/namespaces/default/pods
{
"kind": "PodMetricsList",
"apiVersion": "metrics.k8s.io/v1beta1",
"metadata": {
"selfLink": "/apis/metrics.k8s.io/v1beta1/namespaces/default/pods"
},
"items": []
}
$ kubectl get --raw https://KUBE-APISERVER-IP:6443/apis/metrics.k8s.io/v1beta1/namespaces/kube-system/pods
{
"kind": "PodMetricsList",
"apiVersion": "metrics.k8s.io/v1beta1",
"metadata": {
"selfLink": "/apis/metrics.k8s.io/v1beta1/namespaces/kube-system/pods"
},
"items": [
{
"metadata": {
"name": "coredns-bcccf59f-jfl6x",
"namespace": "kube-system",
"selfLink": "/apis/metrics.k8s.io/v1beta1/namespaces/kube-system/pods/coredns-bcccf59f-jfl6x",
"creationTimestamp": "2021-02-17T20:31:29Z"
},
"timestamp": "2021-02-17T20:30:27Z",
"window": "30s",
"containers": [
{
"name": "coredns",
"usage": {
"cpu": "1891053n",
"memory": "8036Ki"
}
}
]
},
{
"metadata": {
"name": "coredns-bcccf59f-vmfvv",
"namespace": "kube-system",
"selfLink": "/apis/metrics.k8s.io/v1beta1/namespaces/kube-system/pods/coredns-bcccf59f-vmfvv",
"creationTimestamp": "2021-02-17T20:31:29Z"
},
"timestamp": "2021-02-17T20:30:25Z",
"window": "30s",
"containers": [
{
"name": "coredns",
"usage": {
"cpu": "1869226n",
"memory": "8096Ki"
}
}
]
}
]
}
您还可以使用命令kubectl top pods,该命令在内部调用上述API
自定义指标
这些由供应商开发的适配器提供,可用的度量标准取决于适配器。一旦知道度量名称,就可以使用它来访问它
您可以按如下所示查看可用指标并获取指标名称
kubectl get --raw https://KUBE-APISERVER-IP:6443/apis/custom.metrics.k8s.io/v1beta1
kubectl get --raw https://KUBE-APISERVER-IP:6443/apis/external.metrics.k8s.io/v1beta1
外部指标
这些由供应商开发的适配器提供,可用的度量标准取决于适配器。一旦知道度量名称,就可以使用它来访问它
您可以按如下所示查看可用指标并获取指标名称
kubectl get --raw https://KUBE-APISERVER-IP:6443/apis/custom.metrics.k8s.io/v1beta1
kubectl get --raw https://KUBE-APISERVER-IP:6443/apis/external.metrics.k8s.io/v1beta1
编辑:
您已经有了Prometheus适配器,但是如果度量没有作为HPA可使用的自定义度量公开,那么您需要公开所需的度量。请参考此说明。关于GKE的情况有点不同
默认情况下,Kubernetes具有一些内置的CPU和内存指标。如果您希望使用基于此指标的HPA,则不会有任何问题
在GCP概念中:
当您希望使用Kubernetes工作负载导出的度量或附加到Kubernetes对象(如Pod或节点)的度量时,将使用自定义度量。
外部度量-发送到度量类型以External.googleapis.com开头的工作区的度量称为外部度量。这些指标通常由开源项目和第三方提供商导出。可以找到更多细节。
Stackdriver监控将外部度量与自定义度量相同,但有一个例外。对于外部度量,全局的资源类型无效,并导致度量数据被丢弃。
由于GKE与
Google Kubernetes引擎GKE包括与Stackdriver监控和Stackdriver日志的本机集成。创建GKE集群时,默认情况下会启用Stackdriver Kubernetes引擎监控,并提供专门为Kubernetes定制的监控仪表板
通过Stackdriver Kubernetes引擎监控,您可以控制Stackdriver日志记录是否收集应用程序日志。您还可以选择禁用Stackdriver监控和Stackdriver日志记录集成
检查可用指标
当您使用CloudEnvironment-GKE时,您可以通过在适当的端口上查询localhost来找到所有默认可用的度量。您必须使用SSH连接到其中一个节点,然后使用curl metric服务器$curl localhost:10255/metrics
第二种方法是检查
重要的
您可以看到可用的指标,但是要在HPA中使用它们,您需要部署诸如Stackdriver适配器或Prometheus适配器之类的适配器。在默认版本1.13.11的GKE集群中,您已经部署了metrics server,heapsterdeprecated在较新的版本和中。
如果您想使用Stackdriver,您可能已经应用了许多配置,但是如果您想使用Prometheus,您需要调整Prometheus操作符、适配器和部署。详情请参阅
在GKE文档中,您可以找到一些教程供您使用或使用。你也可以阅读,这取决于你的需要
由于GKE与Stackdriver集成在一起,所以您可以阅读关于GKE的文章。关于GKE的案例有点不同
默认情况下,Kubernetes具有一些内置的CPU和内存指标。如果您希望使用基于此指标的HPA,则不会有任何问题
在GCP概念中:
当您希望使用Kubernetes工作负载导出的度量或附加到Kubernetes对象(如Pod或节点)的度量时,将使用自定义度量。
外部度量-发送到度量类型以External.googleapis.com开头的工作区的度量称为外部度量。这些指标通常由开源项目和第三方提供商导出。可以找到更多细节。
Stackdriver监控将外部度量与自定义度量相同,但有一个例外。对于外部度量,全局的资源类型无效,并导致度量数据被丢弃。
由于GKE与
Google Kubernetes引擎GKE包括与Stackdriver监控和Stackdriver日志的本机集成。创建GKE集群时,默认情况下会启用Stackdriver Kubernetes引擎监控,并提供专门为Kubernetes定制的监控仪表板
通过Stackdriver Kubernetes引擎监控,您可以控制Stackdriver日志记录是否收集应用程序日志。您还可以选择禁用Stackdriver监控和Stackdriver日志记录集成
检查可用指标
当您使用CloudEnvironment-GKE时,您可以通过在适当的端口上查询localhost来找到所有默认可用的度量。您必须使用SSH连接到其中一个节点,然后使用curl metric服务器$curl localhost:10255/metrics
第二种方法是检查
重要的
您可以看到可用的指标,但是要在HPA中使用它们,您需要部署诸如Stackdriver适配器或Prometheus适配器之类的适配器。在默认版本1.13.11的GKE集群中,您已经部署了metrics server,heapsterdeprecated在较新的版本和中。如果您想使用Stackdriver,您可能已经应用了许多配置,但是如果您想使用Prometheus,您需要调整Prometheus操作符、适配器和部署。详情请参阅
在GKE文档中,您可以找到一些教程供您使用或使用。你也可以阅读,这取决于你的需要
由于GKE与Stackdriver集成在一起,您可以阅读有关的文章。我在哪里可以找到KUBE-APISERVER-IP?有这样的snth吗?您有一个kubernetes群集om GKE…您是否使用kubectl连接到它?运行此命令获取kubeconfig文件gcloud container clusters get credentials,然后运行kubectl config view查看apiserver端点..有关更多详细信息,我已经执行了您提到的查询,但我只看到了两个指标-CPU和内存。您能解释一下这个输出吗?CPU和内存度量由度量服务器公开,HPA可以使用。对于自定义和外部指标,您需要咨询提供指标的供应商我在哪里可以找到KUBE-APISERVER-IP?有这样的snth吗?您有一个kubernetes群集om GKE…您是否使用kubectl连接到它?运行此命令获取kubeconfig文件gcloud container clusters get credentials,然后运行kubectl config view查看apiserver端点..有关更多详细信息,我已经执行了您提到的查询,但我只看到了两个指标-CPU和内存。您能解释一下这个输出吗?CPU和内存度量由度量服务器公开,HPA可以使用。对于自定义和外部指标,您需要咨询提供指标的供应商。您可以建议您的步骤/配置吗?你用过任何教程吗?您希望获得什么类型的指标?您能建议您的步骤/配置吗?你用过任何教程吗?您希望获得什么类型的度量?