mirror of
https://github.com/kubernetes-sigs/prometheus-adapter.git
synced 2026-04-06 09:47:54 +00:00
sample hpa
This commit is contained in:
parent
d2deecefbc
commit
4a930b2843
9 changed files with 167 additions and 11 deletions
|
|
@ -7,7 +7,7 @@ delete-adapter-local:
|
|||
kubectl delete -f manifests/
|
||||
|
||||
namespace:
|
||||
kubectl create -f addepar/custom-metrics-namespace.json
|
||||
kubectl create namespace custom-metrics
|
||||
|
||||
raw:
|
||||
kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1
|
||||
|
|
|
|||
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
"apiVersion": "v1",
|
||||
"kind": "Namespace",
|
||||
"metadata": {
|
||||
"name": "custom-metrics",
|
||||
"labels": {
|
||||
"name": "custom-metrics"
|
||||
}
|
||||
}
|
||||
}
|
||||
5
deploy/addepar/prometheus/Makefile
Normal file
5
deploy/addepar/prometheus/Makefile
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
deploy:
|
||||
kubectl create -n prom -f prometheus.yaml
|
||||
|
||||
namespace:
|
||||
kubectl create namespace prom
|
||||
63
deploy/addepar/prometheus/prometheus.yaml
Normal file
63
deploy/addepar/prometheus/prometheus.yaml
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: prometheus
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: prometheus
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources:
|
||||
- nodes
|
||||
- services
|
||||
- endpoints
|
||||
- pods
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources:
|
||||
- configmaps
|
||||
verbs: ["get"]
|
||||
- nonResourceURLs: ["/metrics"]
|
||||
verbs: ["get"]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: prometheus
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: prometheus
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: prometheus
|
||||
namespace: prom
|
||||
---
|
||||
apiVersion: monitoring.coreos.com/v1
|
||||
kind: Prometheus
|
||||
metadata:
|
||||
name: prometheus
|
||||
spec:
|
||||
# Match all service monitors in all namespaces
|
||||
serviceMonitorNamespaceSelector: {}
|
||||
serviceMonitorSelector: {}
|
||||
resources:
|
||||
requests:
|
||||
memory: 400Mi
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: prometheus
|
||||
spec:
|
||||
type: NodePort
|
||||
ports:
|
||||
- name: web
|
||||
nodePort: 30900
|
||||
port: 9090
|
||||
protocol: TCP
|
||||
targetPort: web
|
||||
selector:
|
||||
prometheus: prometheus
|
||||
25
deploy/addepar/sample-hpa/Makefile
Normal file
25
deploy/addepar/sample-hpa/Makefile
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
sample-app:
|
||||
kubectl create -n default -f sample-app.deploy.yaml
|
||||
kubectl create -n default -f sample-app.service.yaml
|
||||
|
||||
delete-sample-app:
|
||||
kubectl delete -n default -f sample-app.deploy.yaml
|
||||
kubectl delete -n default -f sample-app.service.yaml
|
||||
|
||||
monitor:
|
||||
kubectl create -n default -f service-monitor.yaml
|
||||
|
||||
hpa:
|
||||
kubectl delete -f sample-app.hpa.yaml
|
||||
kubectl create -f sample-app.hpa.yaml
|
||||
|
||||
test:
|
||||
kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta1/namespaces/default/pods/*/http_requests?selector=app%3Dsample-app"
|
||||
|
||||
get-ip:
|
||||
kubectl get service sample-app -o jsonpath='{ .spec.clusterIP }'
|
||||
|
||||
busybox:
|
||||
# run wget -qO- IP_ADDRESS
|
||||
kubectl run -it --rm --restart=Never busybox --image=gcr.io/google-containers/busybox sh
|
||||
|
||||
22
deploy/addepar/sample-hpa/sample-app.deploy.yaml
Normal file
22
deploy/addepar/sample-hpa/sample-app.deploy.yaml
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: sample-app
|
||||
labels:
|
||||
app: sample-app
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: sample-app
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: sample-app
|
||||
spec:
|
||||
containers:
|
||||
- image: luxas/autoscale-demo:v0.1.2
|
||||
name: metrics-provider
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 8080
|
||||
24
deploy/addepar/sample-hpa/sample-app.hpa.yaml
Normal file
24
deploy/addepar/sample-hpa/sample-app.hpa.yaml
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
kind: HorizontalPodAutoscaler
|
||||
apiVersion: autoscaling/v2beta1
|
||||
metadata:
|
||||
name: sample-app
|
||||
spec:
|
||||
scaleTargetRef:
|
||||
# point the HPA at the sample application
|
||||
# you created above
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
name: sample-app
|
||||
# autoscale between 1 and 10 replicas
|
||||
minReplicas: 1
|
||||
maxReplicas: 10
|
||||
metrics:
|
||||
# use a "Pods" metric, which takes the average of the
|
||||
# given metric across all pods controlled by the autoscaling target
|
||||
- type: Pods
|
||||
pods:
|
||||
# use the metric that you used above: pods/http_requests
|
||||
metricName: http_requests
|
||||
# target 500 milli-requests per second,
|
||||
# which is 1 request every two seconds
|
||||
targetAverageValue: 20m
|
||||
15
deploy/addepar/sample-hpa/sample-app.service.yaml
Normal file
15
deploy/addepar/sample-hpa/sample-app.service.yaml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
labels:
|
||||
app: sample-app
|
||||
name: sample-app
|
||||
spec:
|
||||
ports:
|
||||
- name: http
|
||||
port: 80
|
||||
protocol: TCP
|
||||
targetPort: 8080
|
||||
selector:
|
||||
app: sample-app
|
||||
type: ClusterIP
|
||||
12
deploy/addepar/sample-hpa/service-monitor.yaml
Normal file
12
deploy/addepar/sample-hpa/service-monitor.yaml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
kind: ServiceMonitor
|
||||
apiVersion: monitoring.coreos.com/v1
|
||||
metadata:
|
||||
name: sample-app
|
||||
labels:
|
||||
app: sample-app
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: sample-app
|
||||
endpoints:
|
||||
- port: http
|
||||
Loading…
Add table
Add a link
Reference in a new issue