mirror of
https://github.com/Telecominfraproject/wlan-cloud-kube-state-metrics.git
synced 2025-10-30 18:17:47 +00:00
Merge branch 'release-2.0' into master
This commit is contained in:
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
@@ -39,7 +39,7 @@ jobs:
|
||||
|
||||
- name: Lint
|
||||
run: |
|
||||
curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(go env GOPATH)/bin v1.30.0
|
||||
curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(go env GOPATH)/bin v1.39.0
|
||||
make lint
|
||||
|
||||
ci-validate-manifests:
|
||||
@@ -209,4 +209,4 @@ jobs:
|
||||
|
||||
- name: End-to-end tests
|
||||
run: |
|
||||
REGISTRY="quay.io/coreos" make e2e
|
||||
make e2e
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
## v2.0.0 / 2021-04-13
|
||||
|
||||
* [CHANGE] Update go version and dependencies #1440
|
||||
|
||||
## v2.0.0-rc.1 / 2021-03-26
|
||||
|
||||
* [CHANGE] Rename --labels-metric-allow-list to --metric-labels-allowlist #1424
|
||||
|
||||
13
Makefile
13
Makefile
@@ -15,8 +15,8 @@ GIT_COMMIT ?= $(shell git rev-parse --short HEAD)
|
||||
OS ?= $(shell uname -s | tr A-Z a-z)
|
||||
ALL_ARCH = amd64 arm arm64 ppc64le s390x
|
||||
PKG = github.com/prometheus/common
|
||||
GO_VERSION = 1.16.2
|
||||
PROMETHEUS_VERSION = 2.25.2
|
||||
GO_VERSION = 1.16.3
|
||||
IMAGE = $(REGISTRY)/kube-state-metrics
|
||||
MULTI_ARCH_IMG = $(IMAGE)-$(ARCH)
|
||||
USER ?= $(shell id -u -n)
|
||||
@@ -109,15 +109,6 @@ push-multi-arch:
|
||||
@for arch in $(ALL_ARCH); do ${DOCKER_CLI} manifest annotate --arch $${arch} $(IMAGE):$(TAG) $(IMAGE)-$${arch}:$(TAG); done
|
||||
${DOCKER_CLI} manifest push --purge $(IMAGE):$(TAG)
|
||||
|
||||
quay-push: .quay-push-$(ARCH)
|
||||
.quay-push-$(ARCH): container-$(ARCH)
|
||||
${DOCKER_CLI} push $(MULTI_ARCH_IMG):$(TAG)
|
||||
${DOCKER_CLI} push $(MULTI_ARCH_IMG):latest
|
||||
ifeq ($(ARCH), amd64)
|
||||
${DOCKER_CLI} push $(IMAGE):$(TAG)
|
||||
${DOCKER_CLI} push $(IMAGE):latest
|
||||
endif
|
||||
|
||||
clean:
|
||||
rm -f kube-state-metrics
|
||||
git clean -Xfd .
|
||||
@@ -162,4 +153,4 @@ install-promtool:
|
||||
@echo Installing promtool
|
||||
@wget -qO- "https://github.com/prometheus/prometheus/releases/download/v${PROMETHEUS_VERSION}/prometheus-${PROMETHEUS_VERSION}.${OS}-${ARCH}.tar.gz" | tar xvz --strip-components=1
|
||||
|
||||
.PHONY: all build build-local all-push all-container container container-* do-push-* sub-push-* push push-multi-arch quay-push test-unit test-rules test-benchmark-compare clean e2e validate-modules shellcheck licensecheck lint generate embedmd
|
||||
.PHONY: all build build-local all-push all-container container container-* do-push-* sub-push-* push push-multi-arch test-unit test-rules test-benchmark-compare clean e2e validate-modules shellcheck licensecheck lint generate embedmd
|
||||
|
||||
26
README.md
26
README.md
@@ -26,8 +26,6 @@ the raw metrics. Note that the metrics exposed on the `/metrics` endpoint
|
||||
reflect the current state of the Kubernetes cluster. When Kubernetes objects
|
||||
are deleted they are no longer visible on the `/metrics` endpoint.
|
||||
|
||||
Note that any new features will be merged into master but released with v2.1.0 release, as currently v2.0.0 is in post feature freeze and only accepting bug fixes.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Versioning](#versioning)
|
||||
@@ -40,6 +38,7 @@ Note that any new features will be merged into master but released with v2.1.0 r
|
||||
- [Enabling VerticalPodAutoscalers](#enabling-verticalpodautoscalers)
|
||||
- [Kube-state-metrics self metrics](#kube-state-metrics-self-metrics)
|
||||
- [Resource recommendation](#resource-recommendation)
|
||||
- [Latency](#latency)
|
||||
- [A note on costing](#a-note-on-costing)
|
||||
- [kube-state-metrics vs. metrics-server](#kube-state-metrics-vs-metrics-server)
|
||||
- [Scaling kube-state-metrics](#scaling-kube-state-metrics)
|
||||
@@ -70,7 +69,7 @@ At most, 5 kube-state-metrics and 5 [kubernetes releases](https://github.com/kub
|
||||
|--------------------|---------------------|---------------------|----------------------|----------------------|-----------------------|
|
||||
| **v1.8.0** | - | - | - | - | - |
|
||||
| **v1.9.8** | ✓ | - | - | - | - |
|
||||
| **v2.0.0-rc.1** | - | -/✓ | -/✓ | ✓ | ✓ |
|
||||
| **v2.0.0** | - | -/✓ | -/✓ | ✓ | ✓ |
|
||||
| **master** | - | -/✓ | -/✓ | ✓ | ✓ |
|
||||
- `✓` Fully supported version range.
|
||||
- `-` The Kubernetes cluster has features the client-go library can't use (additional API objects, deprecated APIs, etc).
|
||||
@@ -86,7 +85,7 @@ release.
|
||||
#### Container Image
|
||||
|
||||
The latest container image can be found at:
|
||||
* `k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.0.0-rc.1` (arch: `amd64`, `arm`, `arm64`, `ppc64le` and `s390x`)
|
||||
* `k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.0.0` (arch: `amd64`, `arm`, `arm64`, `ppc64le` and `s390x`)
|
||||
|
||||
### Metrics Documentation
|
||||
|
||||
@@ -166,24 +165,25 @@ run-time configuration, see [`/examples/prometheus-alerting-rules`](./examples/p
|
||||
|
||||
#### Resource recommendation
|
||||
|
||||
> Note: These recommendations are based on scalability tests done over a year ago. They may differ significantly today.
|
||||
|
||||
Resource usage for kube-state-metrics changes with the Kubernetes objects (Pods/Nodes/Deployments/Secrets etc.) size of the cluster.
|
||||
To some extent, the Kubernetes objects in a cluster are in direct proportion to the node number of the cluster.
|
||||
|
||||
As a general rule, you should allocate
|
||||
As a general rule, you should allocate:
|
||||
|
||||
* 200MiB memory
|
||||
* 250MiB memory
|
||||
* 0.1 cores
|
||||
|
||||
For clusters of more than 100 nodes, allocate at least
|
||||
Note that if CPU limits are set too low, kube-state-metrics' internal queues will not be able to be worked off quickly enough, resulting in increased memory consumption as the queue length grows. If you experience problems resulting from high memory allocation or CPU throttling, try increasing the CPU limits.
|
||||
|
||||
* 2MiB memory per node
|
||||
* 0.001 cores per node
|
||||
### Latency
|
||||
|
||||
These numbers are based on [scalability tests](https://github.com/kubernetes/kube-state-metrics/issues/124#issuecomment-318394185) at 30 pods per node.
|
||||
In a 100 node cluster scaling test the latency numbers were as follows:
|
||||
|
||||
Note that if CPU limits are set too low, kube-state-metrics' internal queues will not be able to be worked off quickly enough, resulting in increased memory consumption as the queue length grows. If you experience problems resulting from high memory allocation, try increasing the CPU limits.
|
||||
```
|
||||
"Perc50": 259615384 ns,
|
||||
"Perc90": 475000000 ns,
|
||||
"Perc99": 906666666 ns.
|
||||
```
|
||||
|
||||
### A note on costing
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ kind: ClusterRoleBinding
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
app.kubernetes.io/version: 2.0.0-rc.1
|
||||
app.kubernetes.io/version: 2.0.0
|
||||
name: kube-state-metrics
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
|
||||
@@ -3,7 +3,7 @@ kind: ClusterRole
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
app.kubernetes.io/version: 2.0.0-rc.1
|
||||
app.kubernetes.io/version: 2.0.0
|
||||
name: kube-state-metrics
|
||||
rules:
|
||||
- apiGroups:
|
||||
|
||||
@@ -3,7 +3,7 @@ kind: RoleBinding
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
app.kubernetes.io/version: 2.0.0-rc.1
|
||||
app.kubernetes.io/version: 2.0.0
|
||||
name: kube-state-metrics
|
||||
namespace: kube-system
|
||||
roleRef:
|
||||
|
||||
@@ -3,7 +3,7 @@ kind: Role
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
app.kubernetes.io/version: 2.0.0-rc.1
|
||||
app.kubernetes.io/version: 2.0.0
|
||||
name: kube-state-metrics
|
||||
namespace: kube-system
|
||||
rules:
|
||||
|
||||
@@ -3,6 +3,6 @@ kind: ServiceAccount
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
app.kubernetes.io/version: 2.0.0-rc.1
|
||||
app.kubernetes.io/version: 2.0.0
|
||||
name: kube-state-metrics
|
||||
namespace: kube-system
|
||||
|
||||
@@ -3,7 +3,7 @@ kind: Service
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
app.kubernetes.io/version: 2.0.0-rc.1
|
||||
app.kubernetes.io/version: 2.0.0
|
||||
name: kube-state-metrics
|
||||
namespace: kube-system
|
||||
spec:
|
||||
|
||||
@@ -3,7 +3,7 @@ kind: StatefulSet
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
app.kubernetes.io/version: 2.0.0-rc.1
|
||||
app.kubernetes.io/version: 2.0.0
|
||||
name: kube-state-metrics
|
||||
namespace: kube-system
|
||||
spec:
|
||||
@@ -16,7 +16,7 @@ spec:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
app.kubernetes.io/version: 2.0.0-rc.1
|
||||
app.kubernetes.io/version: 2.0.0
|
||||
spec:
|
||||
containers:
|
||||
- args:
|
||||
@@ -31,7 +31,7 @@ spec:
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.namespace
|
||||
image: k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.0.0-rc.1
|
||||
image: k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.0.0
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /healthz
|
||||
|
||||
@@ -3,7 +3,7 @@ kind: ClusterRoleBinding
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
app.kubernetes.io/version: 2.0.0-rc.1
|
||||
app.kubernetes.io/version: 2.0.0
|
||||
name: kube-state-metrics
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
|
||||
@@ -3,7 +3,7 @@ kind: ClusterRole
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
app.kubernetes.io/version: 2.0.0-rc.1
|
||||
app.kubernetes.io/version: 2.0.0
|
||||
name: kube-state-metrics
|
||||
rules:
|
||||
- apiGroups:
|
||||
|
||||
@@ -3,7 +3,7 @@ kind: Deployment
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
app.kubernetes.io/version: 2.0.0-rc.1
|
||||
app.kubernetes.io/version: 2.0.0
|
||||
name: kube-state-metrics
|
||||
namespace: kube-system
|
||||
spec:
|
||||
@@ -15,10 +15,10 @@ spec:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
app.kubernetes.io/version: 2.0.0-rc.1
|
||||
app.kubernetes.io/version: 2.0.0
|
||||
spec:
|
||||
containers:
|
||||
- image: k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.0.0-rc.1
|
||||
- image: k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.0.0
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /healthz
|
||||
|
||||
@@ -3,6 +3,6 @@ kind: ServiceAccount
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
app.kubernetes.io/version: 2.0.0-rc.1
|
||||
app.kubernetes.io/version: 2.0.0
|
||||
name: kube-state-metrics
|
||||
namespace: kube-system
|
||||
|
||||
@@ -3,7 +3,7 @@ kind: Service
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-state-metrics
|
||||
app.kubernetes.io/version: 2.0.0-rc.1
|
||||
app.kubernetes.io/version: 2.0.0
|
||||
name: kube-state-metrics
|
||||
namespace: kube-system
|
||||
spec:
|
||||
|
||||
14
go.mod
14
go.mod
@@ -18,7 +18,7 @@ require (
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/prometheus/client_golang v1.10.0
|
||||
github.com/prometheus/client_model v0.2.0
|
||||
github.com/prometheus/common v0.19.0
|
||||
github.com/prometheus/common v0.18.0
|
||||
github.com/prometheus/exporter-toolkit v0.5.1
|
||||
github.com/prometheus/prometheus v2.5.0+incompatible
|
||||
github.com/robfig/cron/v3 v3.0.1
|
||||
@@ -30,17 +30,17 @@ require (
|
||||
golang.org/x/tools v0.1.0
|
||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect
|
||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
|
||||
k8s.io/api v0.20.4
|
||||
k8s.io/apimachinery v0.20.4
|
||||
k8s.io/api v0.20.5
|
||||
k8s.io/apimachinery v0.20.5
|
||||
k8s.io/autoscaler/vertical-pod-autoscaler v0.9.2
|
||||
k8s.io/client-go v0.20.4
|
||||
k8s.io/client-go v0.20.5
|
||||
k8s.io/klog/v2 v2.8.0
|
||||
)
|
||||
|
||||
replace (
|
||||
k8s.io/api v0.18.3 => k8s.io/api v0.20.4
|
||||
k8s.io/apimachinery v0.18.3 => k8s.io/apimachinery v0.20.4
|
||||
k8s.io/client-go v0.18.3 => k8s.io/client-go v0.20.4
|
||||
k8s.io/api v0.18.3 => k8s.io/api v0.20.5
|
||||
k8s.io/apimachinery v0.18.3 => k8s.io/apimachinery v0.20.5
|
||||
k8s.io/client-go v0.18.3 => k8s.io/client-go v0.20.5
|
||||
)
|
||||
|
||||
go 1.16
|
||||
|
||||
15
go.sum
15
go.sum
@@ -430,9 +430,8 @@ github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8
|
||||
github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA=
|
||||
github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
|
||||
github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
|
||||
github.com/prometheus/common v0.18.0 h1:WCVKW7aL6LEe1uryfI9dnEc2ZqNB1Fn0ok930v0iL1Y=
|
||||
github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
|
||||
github.com/prometheus/common v0.19.0 h1:Itb4+NjG9wRdkAWgVucbM/adyIXxEhbw0866e0uZE6A=
|
||||
github.com/prometheus/common v0.19.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
|
||||
github.com/prometheus/exporter-toolkit v0.5.1 h1:9eqgis5er9xN613ZSADjypCJaDGj9ZlcWBvsIHa8/3c=
|
||||
github.com/prometheus/exporter-toolkit v0.5.1/go.mod h1:OCkM4805mmisBhLmVFw858QYi3v0wKdY6/UxrT0pZVg=
|
||||
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||
@@ -882,14 +881,14 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
|
||||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
||||
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
||||
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
||||
k8s.io/api v0.20.4 h1:xZjKidCirayzX6tHONRQyTNDVIR55TYVqgATqo6ZULY=
|
||||
k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ=
|
||||
k8s.io/apimachinery v0.20.4 h1:vhxQ0PPUUU2Ns1b9r4/UFp13UPs8cw2iOoTjnY9faa0=
|
||||
k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU=
|
||||
k8s.io/api v0.20.5 h1:zsMTffV0Le2EiI0aKvlTHEnXGxk1HiqGRhJcCPiI7JI=
|
||||
k8s.io/api v0.20.5/go.mod h1:FQjAceXnVaWDeov2YUWhOb6Yt+5UjErkp6UO3nczO1Y=
|
||||
k8s.io/apimachinery v0.20.5 h1:wO/FxMVRn223rAKxnBbwCyuN96bS9MFTIvP0e/V7cps=
|
||||
k8s.io/apimachinery v0.20.5/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU=
|
||||
k8s.io/autoscaler/vertical-pod-autoscaler v0.9.2 h1:fMFkbjo6ElaL3POE3ctxLuX3aR+bEzpo2q1R5Aq2JhE=
|
||||
k8s.io/autoscaler/vertical-pod-autoscaler v0.9.2/go.mod h1:PwWTGRRCxefhAezrDbG/tRYSAW7etHjjMPAr8fXKVAA=
|
||||
k8s.io/client-go v0.20.4 h1:85crgh1IotNkLpKYKZHVNI1JT86nr/iDCvq2iWKsql4=
|
||||
k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k=
|
||||
k8s.io/client-go v0.20.5 h1:dJGtYUvFrFGjQ+GjXEIby0gZWdlAOc0xJBJqY3VyDxA=
|
||||
k8s.io/client-go v0.20.5/go.mod h1:Ee5OOMMYvlH8FCZhDsacjMlCBwetbGZETwo1OA+e6Zw=
|
||||
k8s.io/code-generator v0.18.3/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c=
|
||||
k8s.io/component-base v0.18.3/go.mod h1:bp5GzGR0aGkYEfTj+eTY0AN/vXTgkJdQXjNTTVUaa3k=
|
||||
k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
|
||||
|
||||
@@ -26,8 +26,8 @@ esac
|
||||
NODE_IMAGE_NAME="docker.io/kindest/node"
|
||||
KUBERNETES_VERSION=v1.20.0
|
||||
KUBE_STATE_METRICS_LOG_DIR=./log
|
||||
KUBE_STATE_METRICS_IMAGE_NAME="quay.io/coreos/kube-state-metrics-${ARCH}"
|
||||
KUBE_STATE_METRICS_CURRENT_IMAGE_NAME="k8s.gcr.io/kube-state-metrics/kube-state-metrics"
|
||||
KUBE_STATE_METRICS_IMAGE_NAME="k8s.gcr.io/kube-state-metrics/kube-state-metrics-${ARCH}"
|
||||
E2E_SETUP_KIND=${E2E_SETUP_KIND:-}
|
||||
E2E_SETUP_KUBECTL=${E2E_SETUP_KUBECTL:-}
|
||||
KIND_VERSION=v0.10.0
|
||||
@@ -99,7 +99,7 @@ set -e
|
||||
kubectl version
|
||||
|
||||
# query kube-state-metrics image tag
|
||||
make container
|
||||
REGISTRY="k8s.gcr.io/kube-state-metrics" make container
|
||||
docker images -a
|
||||
KUBE_STATE_METRICS_IMAGE_TAG=$(docker images -a|grep "${KUBE_STATE_METRICS_IMAGE_NAME}" |grep -v 'latest'|awk '{print $2}'|sort -u)
|
||||
echo "local kube-state-metrics image tag: $KUBE_STATE_METRICS_IMAGE_TAG"
|
||||
|
||||
Reference in New Issue
Block a user