次の設定をすべて設定しましたが、コマンドを入力しても request_per_second が表示されません
kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1
監視する必要があるnode.jsにprom-clientをインストールし、/metricsをテストしましたが、非常にうまく機能しており、メトリック「resquest_count」が返されるオブジェクトです
そのノードコードの重要な部分は次のとおりです
(...)
const counter = new client.Counter({
name: 'request_count',
help: 'The total number of processed requests'
});
(...)
router.get('/metrics', async (req, res) => {
res.set('Content-Type', client.register.contentType)
res.end(await client.register.metrics())
})
これは私のサービスモニター構成です
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: un1qnx-validation-service-monitor-node
namespace: default
labels:
app: node-request-persistence
release: prometheus
spec:
selector:
matchLabels:
app: node-request-persistence
endpoints:
- interval: 5s
path: /metrics
port: "80"
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
namespaceSelector:
matchNames:
- un1qnx-aks-development
これは node-request-persistence 構成です
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: node-request-persistence
namespace: un1qnx-aks-development
name: node-request-persistence
spec:
selector:
matchLabels:
app: node-request-persistence
template:
metadata:
annotations:
prometheus.io/scrape: "true"
prometheus.io/path: /metrics
prometheus.io/port: "80"
labels:
app: node-request-persistence
spec:
containers:
- name: node-request-persistence
image: node-request-persistence
imagePullPolicy: Always # IfNotPresent
resources:
requests:
memory: "200Mi" # Gi
cpu: "100m"
limits:
memory: "400Mi"
cpu: "500m"
ports:
- name: node-port
containerPort: 80
これはプロメテウス アダプターです。
prometheus:
url: http://prometheus-server.default.svc.cluster.local
port: 9090
rules:
custom:
- seriesQuery: 'request_count{namespace!="", pod!=""}'
resources:
overrides:
namespace: {resource: "namespace"}
pod: {resource: "pod"}
name:
as: "request_per_second"
metricsQuery: "round(avg(rate(<<.Series>>{<<.LabelMatchers>>}[1m])) by (<<.GroupBy>>))"
これがHPです
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: un1qnx-validation-service-hpa-angle
namespace: un1qnx-aks-development
spec:
minReplicas: 1
maxReplicas: 10
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: un1qnx-validation-service-angle
metrics:
- type: Pods
pods:
metric:
name: request_per_second
target:
type: AverageValue
averageValue: "5"
コマンド
kubectl get hpa -n un1qnx-aks-development
結果は「不明/5」
また、コマンド
kubectl get --raw "http://prometheus-server.default.svc.cluster.local:9090/api/v1/series"
結果は
サーバーからのエラー (NotFound): サーバーは要求されたリソースを見つけることができませんでした
収集されたメトリックについて何らかの値を返す必要があると思います...問題はサービスモニターにあると思いますが、これは初めてです
お気付きのように、別のデプロイ ポッドに基づいてデプロイをスケーリングしようとしていますが、そこに問題があるかどうかはわかりません
これは私の論文のためなので、答えていただければ幸いです
kubernetes - バージョン 1.19.9
プロメテウス - グラフ prometheus-14.2.1 アプリ バージョン 2.26.0
Prometheus アダプター - チャート 2.14.2 アプリ バージョン 0.8.4
そして、ヘルムを使用してインストールされたすべての場所