diff --git a/CHANGELOG.md b/CHANGELOG.md index e2c79c6378..150261690b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/README.md b/README.md index 5d89a654e9..a35c45044e 100644 --- a/README.md +++ b/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 @@ -153,24 +152,25 @@ http_request_duration_seconds_count{handler="metrics",method="get"} 30 #### 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 diff --git a/VERSION b/VERSION index 97041a78cf..227cea2156 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.0.0-rc.1 +2.0.0 diff --git a/examples/autosharding/cluster-role-binding.yaml b/examples/autosharding/cluster-role-binding.yaml index 07bf30c70d..8768b9f6c2 100644 --- a/examples/autosharding/cluster-role-binding.yaml +++ b/examples/autosharding/cluster-role-binding.yaml @@ -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 diff --git a/examples/autosharding/cluster-role.yaml b/examples/autosharding/cluster-role.yaml index 8ff614e669..c4e7536aa2 100644 --- a/examples/autosharding/cluster-role.yaml +++ b/examples/autosharding/cluster-role.yaml @@ -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: diff --git a/examples/autosharding/role-binding.yaml b/examples/autosharding/role-binding.yaml index ad631ea03d..2d6e7b12b7 100644 --- a/examples/autosharding/role-binding.yaml +++ b/examples/autosharding/role-binding.yaml @@ -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: diff --git a/examples/autosharding/role.yaml b/examples/autosharding/role.yaml index fd4afa5f30..e4483fd6a2 100644 --- a/examples/autosharding/role.yaml +++ b/examples/autosharding/role.yaml @@ -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: diff --git a/examples/autosharding/service-account.yaml b/examples/autosharding/service-account.yaml index 1708b4beac..34004276de 100644 --- a/examples/autosharding/service-account.yaml +++ b/examples/autosharding/service-account.yaml @@ -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 diff --git a/examples/autosharding/service.yaml b/examples/autosharding/service.yaml index 9ef76c71d5..589d2977be 100644 --- a/examples/autosharding/service.yaml +++ b/examples/autosharding/service.yaml @@ -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: diff --git a/examples/autosharding/statefulset.yaml b/examples/autosharding/statefulset.yaml index 84bd633e8f..463d7e2ded 100644 --- a/examples/autosharding/statefulset.yaml +++ b/examples/autosharding/statefulset.yaml @@ -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 diff --git a/examples/standard/cluster-role-binding.yaml b/examples/standard/cluster-role-binding.yaml index 07bf30c70d..8768b9f6c2 100644 --- a/examples/standard/cluster-role-binding.yaml +++ b/examples/standard/cluster-role-binding.yaml @@ -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 diff --git a/examples/standard/cluster-role.yaml b/examples/standard/cluster-role.yaml index 8ff614e669..c4e7536aa2 100644 --- a/examples/standard/cluster-role.yaml +++ b/examples/standard/cluster-role.yaml @@ -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: diff --git a/examples/standard/deployment.yaml b/examples/standard/deployment.yaml index 1dd23935a0..f7ead25689 100644 --- a/examples/standard/deployment.yaml +++ b/examples/standard/deployment.yaml @@ -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 diff --git a/examples/standard/service-account.yaml b/examples/standard/service-account.yaml index 1708b4beac..34004276de 100644 --- a/examples/standard/service-account.yaml +++ b/examples/standard/service-account.yaml @@ -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 diff --git a/examples/standard/service.yaml b/examples/standard/service.yaml index 9ef76c71d5..589d2977be 100644 --- a/examples/standard/service.yaml +++ b/examples/standard/service.yaml @@ -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: