mirror of
https://github.com/kubernetes-sigs/prometheus-adapter.git
synced 2026-04-07 22:25:03 +00:00
Make changes
This commit is contained in:
parent
ae55c3fe01
commit
57c607f8b9
7 changed files with 52 additions and 177 deletions
|
|
@ -15,14 +15,14 @@ case $(uname) in
|
||||||
b64_opts='--wrap=0'
|
b64_opts='--wrap=0'
|
||||||
esac
|
esac
|
||||||
|
|
||||||
#go get -v -u github.com/cloudflare/cfssl/cmd/...
|
go get -v -u github.com/cloudflare/cfssl/cmd/...
|
||||||
|
|
||||||
export PURPOSE=metrics
|
export PURPOSE=metrics
|
||||||
openssl req -x509 -sha256 -new -nodes -days 365 -newkey rsa:2048 -keyout ${PURPOSE}-ca.key -out ${PURPOSE}-ca.crt -subj "/CN=ca"
|
openssl req -x509 -sha256 -new -nodes -days 365 -newkey rsa:2048 -keyout ${PURPOSE}-ca.key -out ${PURPOSE}-ca.crt -subj "/CN=ca"
|
||||||
echo '{"signing":{"default":{"expiry":"43800h","usages":["signing","key encipherment","'${PURPOSE}'"]}}}' > "${PURPOSE}-ca-config.json"
|
echo '{"signing":{"default":{"expiry":"43800h","usages":["signing","key encipherment","'${PURPOSE}'"]}}}' > "${PURPOSE}-ca-config.json"
|
||||||
|
|
||||||
export SERVICE_NAME=custom-metrics-apiserver
|
export SERVICE_NAME=custom-metrics-apiserver
|
||||||
export ALT_NAMES='"custom-metrics-apiserver.monitoring","custom-metrics-apiserver.monitoring.svc"'
|
export ALT_NAMES='"custom-metrics-apiserver.custom-metrics","custom-metrics-apiserver.custom-metrics.svc"'
|
||||||
echo "{\"CN\":\"${SERVICE_NAME}\", \"hosts\": [${ALT_NAMES}], \"key\": {\"algo\": \"rsa\",\"size\": 2048}}" | \
|
echo "{\"CN\":\"${SERVICE_NAME}\", \"hosts\": [${ALT_NAMES}], \"key\": {\"algo\": \"rsa\",\"size\": 2048}}" | \
|
||||||
cfssl gencert -ca=metrics-ca.crt -ca-key=metrics-ca.key -config=metrics-ca-config.json - | cfssljson -bare apiserver
|
cfssl gencert -ca=metrics-ca.crt -ca-key=metrics-ca.key -config=metrics-ca-config.json - | cfssljson -bare apiserver
|
||||||
|
|
||||||
|
|
@ -32,6 +32,6 @@ kind: Secret
|
||||||
metadata:
|
metadata:
|
||||||
name: cm-adapter-serving-certs
|
name: cm-adapter-serving-certs
|
||||||
data:
|
data:
|
||||||
serving.crt: $(base64 ${b64_opts} < apiserver.pem)
|
serving.crt: $(cat apiserver.pem | base64 ${b64_opts})
|
||||||
serving.key: $(base64 ${b64_opts} < apiserver-key.pem)
|
serving.key: $(cat apiserver-key.pem | base64 ${b64_opts})
|
||||||
EOF
|
EOF
|
||||||
|
|
|
||||||
|
|
@ -3,26 +3,32 @@ kind: ServiceAccount
|
||||||
metadata:
|
metadata:
|
||||||
name: prometheus
|
name: prometheus
|
||||||
---
|
---
|
||||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
kind: ClusterRole
|
kind: ClusterRole
|
||||||
metadata:
|
metadata:
|
||||||
name: prometheus
|
name: prometheus
|
||||||
rules:
|
rules:
|
||||||
- apiGroups: [""]
|
- apiGroups: [""]
|
||||||
resources:
|
resources:
|
||||||
- nodes
|
- nodes
|
||||||
- services
|
- nodes/metrics
|
||||||
- endpoints
|
- services
|
||||||
- pods
|
- endpoints
|
||||||
verbs: ["get", "list", "watch"]
|
- pods
|
||||||
- apiGroups: [""]
|
verbs: ["get", "list", "watch"]
|
||||||
resources:
|
- apiGroups: [""]
|
||||||
- configmaps
|
resources:
|
||||||
verbs: ["get"]
|
- configmaps
|
||||||
- nonResourceURLs: ["/metrics"]
|
verbs: ["get"]
|
||||||
verbs: ["get"]
|
- apiGroups:
|
||||||
|
- networking.k8s.io
|
||||||
|
resources:
|
||||||
|
- ingresses
|
||||||
|
verbs: ["get", "list", "watch"]
|
||||||
|
- nonResourceURLs: ["/metrics"]
|
||||||
|
verbs: ["get"]
|
||||||
---
|
---
|
||||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
kind: ClusterRoleBinding
|
kind: ClusterRoleBinding
|
||||||
metadata:
|
metadata:
|
||||||
name: prometheus
|
name: prometheus
|
||||||
|
|
@ -31,9 +37,9 @@ roleRef:
|
||||||
kind: ClusterRole
|
kind: ClusterRole
|
||||||
name: prometheus
|
name: prometheus
|
||||||
subjects:
|
subjects:
|
||||||
- kind: ServiceAccount
|
- kind: ServiceAccount
|
||||||
name: prometheus
|
name: prometheus
|
||||||
namespace: prom
|
namespace: default
|
||||||
---
|
---
|
||||||
apiVersion: monitoring.coreos.com/v1
|
apiVersion: monitoring.coreos.com/v1
|
||||||
kind: Prometheus
|
kind: Prometheus
|
||||||
|
|
@ -41,11 +47,13 @@ metadata:
|
||||||
name: prometheus
|
name: prometheus
|
||||||
spec:
|
spec:
|
||||||
# Match all service monitors in all namespaces
|
# Match all service monitors in all namespaces
|
||||||
|
serviceAccountName: prometheus
|
||||||
serviceMonitorNamespaceSelector: {}
|
serviceMonitorNamespaceSelector: {}
|
||||||
serviceMonitorSelector: {}
|
serviceMonitorSelector: {}
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
memory: 400Mi
|
memory: 400Mi
|
||||||
|
enableAdminAPI: false
|
||||||
---
|
---
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Service
|
kind: Service
|
||||||
|
|
@ -54,10 +62,10 @@ metadata:
|
||||||
spec:
|
spec:
|
||||||
type: NodePort
|
type: NodePort
|
||||||
ports:
|
ports:
|
||||||
- name: web
|
- name: web
|
||||||
nodePort: 30900
|
nodePort: 30900
|
||||||
port: 9090
|
port: 9090
|
||||||
protocol: TCP
|
protocol: TCP
|
||||||
targetPort: web
|
targetPort: web
|
||||||
selector:
|
selector:
|
||||||
prometheus: prometheus
|
prometheus: prometheus
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@ monitor:
|
||||||
kubectl create -n default -f service-monitor.yaml
|
kubectl create -n default -f service-monitor.yaml
|
||||||
|
|
||||||
hpa:
|
hpa:
|
||||||
kubectl delete -f sample-app.hpa.yaml
|
|
||||||
kubectl create -f sample-app.hpa.yaml
|
kubectl create -f sample-app.hpa.yaml
|
||||||
|
|
||||||
test:
|
test:
|
||||||
|
|
|
||||||
|
|
@ -1,24 +1,19 @@
|
||||||
|
apiVersion: autoscaling/v2beta2
|
||||||
kind: HorizontalPodAutoscaler
|
kind: HorizontalPodAutoscaler
|
||||||
apiVersion: autoscaling/v2beta1
|
|
||||||
metadata:
|
metadata:
|
||||||
name: sample-app
|
name: sample-app
|
||||||
spec:
|
spec:
|
||||||
scaleTargetRef:
|
scaleTargetRef:
|
||||||
# point the HPA at the sample application
|
|
||||||
# you created above
|
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
name: sample-app
|
name: sample-app
|
||||||
# autoscale between 1 and 10 replicas
|
|
||||||
minReplicas: 1
|
minReplicas: 1
|
||||||
maxReplicas: 10
|
maxReplicas: 5
|
||||||
metrics:
|
metrics:
|
||||||
# use a "Pods" metric, which takes the average of the
|
- type: Pods
|
||||||
# given metric across all pods controlled by the autoscaling target
|
pods:
|
||||||
- type: Pods
|
metric:
|
||||||
pods:
|
name: http_requests_total
|
||||||
# use the metric that you used above: pods/http_requests
|
target:
|
||||||
metricName: http_requests
|
type: AverageValue
|
||||||
# target 500 milli-requests per second,
|
averageValue: 20m
|
||||||
# which is 1 request every two seconds
|
|
||||||
targetAverageValue: 20m
|
|
||||||
|
|
|
||||||
|
|
@ -19,14 +19,13 @@ spec:
|
||||||
serviceAccountName: custom-metrics-apiserver
|
serviceAccountName: custom-metrics-apiserver
|
||||||
containers:
|
containers:
|
||||||
- name: custom-metrics-apiserver
|
- name: custom-metrics-apiserver
|
||||||
image: gcr.io/k8s-staging-prometheus-adapter/prometheus-adapter-amd64
|
image: gcr.io/k8s-staging-prometheus-adapter/prometheus-adapter-amd64:v0.9.1
|
||||||
imagePullPolicy: Never
|
|
||||||
args:
|
args:
|
||||||
- --secure-port=6443
|
- --secure-port=6443
|
||||||
- --tls-cert-file=/var/run/serving-cert/serving.crt
|
- --tls-cert-file=/var/run/serving-cert/serving.crt
|
||||||
- --tls-private-key-file=/var/run/serving-cert/serving.key
|
- --tls-private-key-file=/var/run/serving-cert/serving.key
|
||||||
- --logtostderr=true
|
- --logtostderr=true
|
||||||
- --prometheus-url=http://prometheus.prom.svc:9090/
|
- --prometheus-url=http://host.docker.internal:30900
|
||||||
- --metrics-relist-interval=1m
|
- --metrics-relist-interval=1m
|
||||||
- --v=10
|
- --v=10
|
||||||
- --config=/etc/adapter/config.yaml
|
- --config=/etc/adapter/config.yaml
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
apiVersion: apiregistration.k8s.io/v1beta1
|
apiVersion: apiregistration.k8s.io/v1
|
||||||
kind: APIService
|
kind: APIService
|
||||||
metadata:
|
metadata:
|
||||||
name: v1beta1.custom.metrics.k8s.io
|
name: v1beta1.custom.metrics.k8s.io
|
||||||
|
|
@ -8,35 +8,7 @@ spec:
|
||||||
namespace: custom-metrics
|
namespace: custom-metrics
|
||||||
group: custom.metrics.k8s.io
|
group: custom.metrics.k8s.io
|
||||||
version: v1beta1
|
version: v1beta1
|
||||||
insecureSkipTLSVerify: true
|
insecureSkipTLSVerify: false
|
||||||
groupPriorityMinimum: 100
|
groupPriorityMinimum: 100
|
||||||
versionPriority: 100
|
versionPriority: 100
|
||||||
---
|
caBundle: LS0 # insert full base64 crt here, should start with LS0
|
||||||
apiVersion: apiregistration.k8s.io/v1beta1
|
|
||||||
kind: APIService
|
|
||||||
metadata:
|
|
||||||
name: v1beta2.custom.metrics.k8s.io
|
|
||||||
spec:
|
|
||||||
service:
|
|
||||||
name: custom-metrics-apiserver
|
|
||||||
namespace: custom-metrics
|
|
||||||
group: custom.metrics.k8s.io
|
|
||||||
version: v1beta2
|
|
||||||
insecureSkipTLSVerify: true
|
|
||||||
groupPriorityMinimum: 100
|
|
||||||
versionPriority: 200
|
|
||||||
---
|
|
||||||
apiVersion: apiregistration.k8s.io/v1beta1
|
|
||||||
kind: APIService
|
|
||||||
metadata:
|
|
||||||
name: v1beta1.external.metrics.k8s.io
|
|
||||||
spec:
|
|
||||||
service:
|
|
||||||
name: custom-metrics-apiserver
|
|
||||||
namespace: custom-metrics
|
|
||||||
group: external.metrics.k8s.io
|
|
||||||
version: v1beta1
|
|
||||||
insecureSkipTLSVerify: true
|
|
||||||
groupPriorityMinimum: 100
|
|
||||||
versionPriority: 100
|
|
||||||
---
|
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,7 @@ metadata:
|
||||||
data:
|
data:
|
||||||
config.yaml: |
|
config.yaml: |
|
||||||
rules:
|
rules:
|
||||||
- seriesQuery: '{__name__=~"^container_.*",container!="POD",namespace!="",pod!=""}'
|
- seriesQuery: '{__name__=~"^.*$", pod!="", namespace!=""}'
|
||||||
seriesFilters: []
|
|
||||||
resources:
|
resources:
|
||||||
overrides:
|
overrides:
|
||||||
namespace:
|
namespace:
|
||||||
|
|
@ -15,103 +14,6 @@ data:
|
||||||
pod:
|
pod:
|
||||||
resource: pod
|
resource: pod
|
||||||
name:
|
name:
|
||||||
matches: ^container_(.*)_seconds_total$
|
matches: "^(.*)$"
|
||||||
as: ""
|
as: "${1}"
|
||||||
metricsQuery: sum(rate(<<.Series>>{<<.LabelMatchers>>,container!="POD"}[1m])) by (<<.GroupBy>>)
|
|
||||||
- seriesQuery: '{__name__=~"^container_.*",container!="POD",namespace!="",pod!=""}'
|
|
||||||
seriesFilters:
|
|
||||||
- isNot: ^container_.*_seconds_total$
|
|
||||||
resources:
|
|
||||||
overrides:
|
|
||||||
namespace:
|
|
||||||
resource: namespace
|
|
||||||
pod:
|
|
||||||
resource: pod
|
|
||||||
name:
|
|
||||||
matches: ^container_(.*)_total$
|
|
||||||
as: ""
|
|
||||||
metricsQuery: sum(rate(<<.Series>>{<<.LabelMatchers>>,container!="POD"}[1m])) by (<<.GroupBy>>)
|
|
||||||
- seriesQuery: '{__name__=~"^container_.*",container!="POD",namespace!="",pod!=""}'
|
|
||||||
seriesFilters:
|
|
||||||
- isNot: ^container_.*_total$
|
|
||||||
resources:
|
|
||||||
overrides:
|
|
||||||
namespace:
|
|
||||||
resource: namespace
|
|
||||||
pod:
|
|
||||||
resource: pod
|
|
||||||
name:
|
|
||||||
matches: ^container_(.*)$
|
|
||||||
as: ""
|
|
||||||
metricsQuery: sum(<<.Series>>{<<.LabelMatchers>>,container!="POD"}) by (<<.GroupBy>>)
|
|
||||||
- seriesQuery: '{namespace!="",__name__!~"^container_.*"}'
|
|
||||||
seriesFilters:
|
|
||||||
- isNot: .*_total$
|
|
||||||
resources:
|
|
||||||
template: <<.Resource>>
|
|
||||||
name:
|
|
||||||
matches: ""
|
|
||||||
as: ""
|
|
||||||
metricsQuery: sum(<<.Series>>{<<.LabelMatchers>>}) by (<<.GroupBy>>)
|
metricsQuery: sum(<<.Series>>{<<.LabelMatchers>>}) by (<<.GroupBy>>)
|
||||||
- seriesQuery: '{namespace!="",__name__!~"^container_.*"}'
|
|
||||||
seriesFilters:
|
|
||||||
- isNot: .*_seconds_total
|
|
||||||
resources:
|
|
||||||
template: <<.Resource>>
|
|
||||||
name:
|
|
||||||
matches: ^(.*)_total$
|
|
||||||
as: ""
|
|
||||||
metricsQuery: sum(rate(<<.Series>>{<<.LabelMatchers>>}[1m])) by (<<.GroupBy>>)
|
|
||||||
- seriesQuery: '{namespace!="",__name__!~"^container_.*"}'
|
|
||||||
seriesFilters: []
|
|
||||||
resources:
|
|
||||||
template: <<.Resource>>
|
|
||||||
name:
|
|
||||||
matches: ^(.*)_seconds_total$
|
|
||||||
as: ""
|
|
||||||
metricsQuery: sum(rate(<<.Series>>{<<.LabelMatchers>>}[1m])) by (<<.GroupBy>>)
|
|
||||||
resourceRules:
|
|
||||||
cpu:
|
|
||||||
containerQuery: sum(rate(container_cpu_usage_seconds_total{<<.LabelMatchers>>}[1m])) by (<<.GroupBy>>)
|
|
||||||
nodeQuery: sum(rate(container_cpu_usage_seconds_total{<<.LabelMatchers>>, id='/'}[1m])) by (<<.GroupBy>>)
|
|
||||||
resources:
|
|
||||||
overrides:
|
|
||||||
instance:
|
|
||||||
resource: node
|
|
||||||
namespace:
|
|
||||||
resource: namespace
|
|
||||||
pod:
|
|
||||||
resource: pod
|
|
||||||
containerLabel: container
|
|
||||||
memory:
|
|
||||||
containerQuery: sum(container_memory_working_set_bytes{<<.LabelMatchers>>}) by (<<.GroupBy>>)
|
|
||||||
nodeQuery: sum(container_memory_working_set_bytes{<<.LabelMatchers>>,id='/'}) by (<<.GroupBy>>)
|
|
||||||
resources:
|
|
||||||
overrides:
|
|
||||||
instance:
|
|
||||||
resource: node
|
|
||||||
namespace:
|
|
||||||
resource: namespace
|
|
||||||
pod:
|
|
||||||
resource: pod
|
|
||||||
containerLabel: container
|
|
||||||
window: 1m
|
|
||||||
externalRules:
|
|
||||||
- seriesQuery: '{__name__=~"^.*_queue_(length|size)$",namespace!=""}'
|
|
||||||
resources:
|
|
||||||
overrides:
|
|
||||||
namespace:
|
|
||||||
resource: namespace
|
|
||||||
name:
|
|
||||||
matches: ^.*_queue_(length|size)$
|
|
||||||
as: "$0"
|
|
||||||
metricsQuery: max(<<.Series>>{<<.LabelMatchers>>})
|
|
||||||
- seriesQuery: '{__name__=~"^.*_queue$",namespace!=""}'
|
|
||||||
resources:
|
|
||||||
overrides:
|
|
||||||
namespace:
|
|
||||||
resource: namespace
|
|
||||||
name:
|
|
||||||
matches: ^.*_queue$
|
|
||||||
as: "$0"
|
|
||||||
metricsQuery: max(<<.Series>>{<<.LabelMatchers>>})
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue