Make changes

This commit is contained in:
Daniel Talamas 2022-03-02 16:56:44 -06:00
parent ae55c3fe01
commit 57c607f8b9
7 changed files with 52 additions and 177 deletions

View file

@ -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

View file

@ -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
- nodes/metrics
- services - services
- endpoints - endpoints
- pods - pods
verbs: ["get", "list", "watch"] verbs: ["get", "list", "watch"]
- apiGroups: [""] - apiGroups: [""]
resources: resources:
- configmaps - configmaps
verbs: ["get"] verbs: ["get"]
- nonResourceURLs: ["/metrics"] - apiGroups:
- networking.k8s.io
resources:
- ingresses
verbs: ["get", "list", "watch"]
- nonResourceURLs: ["/metrics"]
verbs: ["get"] 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

View file

@ -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:

View file

@ -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
# given metric across all pods controlled by the autoscaling target
- type: Pods - type: Pods
pods: pods:
# use the metric that you used above: pods/http_requests metric:
metricName: http_requests name: http_requests_total
# target 500 milli-requests per second, target:
# which is 1 request every two seconds type: AverageValue
targetAverageValue: 20m averageValue: 20m

View file

@ -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

View file

@ -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
---

View file

@ -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>>})