apiVersion: apiregistration.k8s.io/v1 kind: APIService metadata: labels: app.kubernetes.io/component: metrics-adapter app.kubernetes.io/name: prometheus-adapter app.kubernetes.io/version: 0.10.0 name: v1beta1.external.metrics.k8s.io spec: group: external.metrics.k8s.io groupPriorityMinimum: 100 insecureSkipTLSVerify: true service: name: prometheus-adapter namespace: monitoring version: v1beta1 versionPriority: 100 --- apiVersion: v1 kind: ConfigMap metadata: name: prometheus-adapter namespace: monitoring labels: name: prometheus-adapter-conf data: config.yaml: |- externalRules: - seriesQuery: '{__name__="cpu"}' metricsQuery: sum(<<.Series>>{<<.LabelMatchers>>}) by (name) resources: overrides: kubernetes_namespace: { resource: namespace } kubernetes_pod_name: { resource: pod } - seriesQuery: '{__name__="mem"}' metricsQuery: sum(<<.Series>>{<<.LabelMatchers>>}) by (name) resources: overrides: kubernetes_namespace: { resource: namespace } kubernetes_pod_name: { resource: pod } rules: - seriesQuery: '{__name__=~"^container_.*",container!="POD",namespace!="",pod!=""}' seriesFilters: [] resources: overrides: namespace: resource: namespace pod: resource: pod name: matches: ^container_(.*)_seconds_total$ as: "" metricsQuery: sum(rate(<<.Series>>{<<.LabelMatchers>>,container!="POD"}[5m])) 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"}[5m])) 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>>) - seriesQuery: '{namespace!="",__name__!~"^container_.*"}' seriesFilters: - isNot: .*_seconds_total resources: template: <<.Resource>> name: matches: ^(.*)_total$ as: "" metricsQuery: sum(rate(<<.Series>>{<<.LabelMatchers>>}[5m])) by (<<.GroupBy>>) - seriesQuery: '{namespace!="",__name__!~"^container_.*"}' seriesFilters: [] resources: template: <<.Resource>> name: matches: ^(.*)_seconds_total$ as: "" metricsQuery: sum(rate(<<.Series>>{<<.LabelMatchers>>}[5m])) by (<<.GroupBy>>) --- apiVersion: apps/v1 kind: Deployment metadata: labels: app.kubernetes.io/component: metrics app.kubernetes.io/instance: prometheus-adapter app.kubernetes.io/name: prometheus-adapter name: prometheus-adapter namespace: monitoring spec: progressDeadlineSeconds: 600 replicas: 1 selector: matchLabels: app.kubernetes.io/instance: prometheus-adapter app.kubernetes.io/name: prometheus-adapter template: metadata: labels: app.kubernetes.io/component: metrics app.kubernetes.io/instance: prometheus-adapter app.kubernetes.io/name: prometheus-adapter name: prometheus-adapter spec: containers: - name: prometheus-adapter args: - /adapter - --secure-port=6443 - --cert-dir=/tmp/cert - --logtostderr=true - --prometheus-url=http://prometheus.monitoring.svc:9090 - --metrics-relist-interval=1m - --v=4 - --config=/etc/adapter/config.yaml image: registry.k8s.io/prometheus-adapter/prometheus-adapter:v0.10.0 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 3 httpGet: path: /healthz port: https scheme: HTTPS initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 5 ports: - containerPort: 6443 name: https protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /healthz port: https scheme: HTTPS initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 5 resources: {} securityContext: allowPrivilegeEscalation: false capabilities: drop: - all readOnlyRootFilesystem: true runAsNonRoot: true runAsUser: 10001 seccompProfile: type: RuntimeDefault terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /etc/adapter/ name: config readOnly: true - mountPath: /tmp name: tmp dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler serviceAccount: prometheus-adapter serviceAccountName: prometheus-adapter terminationGracePeriodSeconds: 30 volumes: - configMap: defaultMode: 420 name: prometheus-adapter name: config - emptyDir: {} name: tmp