# Kubernetes 1.21<!-- .element: style="font-size: 2.5em" -->
#### Démo Équipe Monitoring du 30/08/22
---
# Sujets
- ChangeLog Kubernetes 1.20 et 1.21
- Versions de CoreDNS et Kubernetes
- Matrice de compatibilité Kube-state-metrics
---
# Kubernetes 1.20 Features & Deprecations<!-- .element: style="font-size: 1.5em" -->
- Pas de changements significatifs
- Update cadvisor d'une **version antérieure à v0.37.0** vers **v0.38.7** (pas de changements notables)
---
# Kubernetes 1.21 Features<!-- .element: style="font-size: 1.5em" -->
- [Generic Ephemeral Volumes](https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes)
- Nouvelle fonctionnalité avec les métriques associées :
- Added `ephemeral_volume_controller_create[_failures]_total counters` to kube-controller-manager metrics (#99115)
- Nouvelles métriques pour les Cronjobs
- Adds two new metrics to cronjobs, a histogram to track the time difference when a job is created and the expected time when it should be created, as well as a gauge for the missed schedules of a cronjob (#99341, @alaypatel07)
- Métrique : histogramme `cronjob_job_creation_skew_duration_seconds` (la "gauge" n'est pas dans le code !!!)
---
# Kubernetes 1.21 Deprecations<!-- .element: style="font-size: 1.5em" -->
- Removed metrics
- Remove storage metrics `storage_operation_errors_total`, since we already have `storage_operation_status_count`. And add new field status for `storage_operation_duration_seconds`, so that we can know about all status storage operation latency. (#98332, @JornShen) [SIG Instrumentation and Storage]
- Utilisé dans le dashboard `defaultv2/kubernetes-v2-kubelet.json`
- D'autres métriques ont également été marquées *deprecated*. Nous ne les avons pas dans Caascad (tableaux de bord et rules)
- PodSecurityPolicy
- `policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+` : [PodSecurityPolicy Deprecation: Past, Present, and Future](https://kubernetes.io/blog/2021/04/06/podsecuritypolicy-deprecation-past-present-and-future/)
---
# CoreDNS et Kubernetes
- CoreDNS n'est pas un composant natif de Kubernetes
- Kubeadm déploie CoreDNS-1.7.0 sur K8S-1.19 et CoreDNS-1.8.0 sur K8S-1.21
- Sur FE, CoreDNS est en 1.8.4 sur K8S-1.19 et K8S-1.21
- Sur AWS, CoreDNS est en 1.7.0 sur K8S-1.19
Conséquences :
- FE : pas de changement
- AWS : nous ne savons pas si AWS déploie CoreDNS 1.8.0 ou une autre version.
---
# CoreDNS
Versions successives : 1.7.1 - 1.8.0 - 1.8.1 - 1.8.2 - 1.8.3 - 1.8.4
Changements notables :
- 1.8.1 :
* </span>plugin/kubernetes: Fix dns programming duration metric (https://github.com/coredns/coredns/pull/4255)
Fix endpoint object latency metrics (previously the metric was not reported)</span><!-- .element: style="font-size:60%" -->
* Nom de la métrique : `dns_programming_duration_seconds`
* Mais qui utilise cette métrique ?
- 1.8.4 :
* </span>plugin/health: add logging for local health request (https://github.com/coredns/coredns/pull/4533)
Exemple de logs : `[WARNING] plugin/health: Local health request to "http://:8080/health" took more than 1s: 2.001739243s`</span><!-- .element: style="font-size:60%" -->
---
# Kube-state-metrics
Nous utilisons actuellement Kube-state-metrics 2.2.0 (clusters >= 1.18)<!-- .element: style="font-size: 0.5em" -->
Kube-state-metrics 2.1.1 est la dernière à supporter (-/✓) K8S-1.17.<!-- .element: style="font-size: 0.5em" -->
| kube-state-metrics | **Kubernetes 1.19** | **Kubernetes 1.20** | **Kubernetes 1.21** | **Kubernetes 1.22** | **Kubernetes 1.23** | **Kubernetes 1.24** |
|--------------------|:--------------------:|:---------------------:|:-------------------:|:-------------------:|:-------------------:|:-------------------:|
| **v2.1.1** | ✓ | ✓ | ✓ | -/✓ | -/✓ | ? |
| **v2.2.0** | ✓ | ✓ | ✓ | ✓ | ? | ? |
| **v2.2.4** | ✓ | ✓ | ✓ | ✓ | ✓ | ? |
| **v2.3.0** | ✓ | ✓ | ✓ | ✓ | ✓ | - |
| **v2.4.2** | -/✓ | -/✓ | ✓ | ✓ | ✓ | - |
| **v2.5.0** | ? | -/✓ | -/✓ | ✓ | ✓ | ✓ |
| **v2.6.0** | ? | -/✓ | -/✓ | ✓ | ✓ | ✓ |
| **master** | -/✓ | -/✓ | -/✓ | ✓ | ✓ | ✓ |
✓ Fully supported version range.<!-- .element: style="font-size: 0.3em;" -->
‐ The Kubernetes cluster has features the client-go library can't use (additional API objects, deprecated APIs, etc).<!-- .element: style="font-size: 0.3em" -->
? The Kubernetes cluster has features the client-go library can't use (additional API objects, deprecated APIs, etc).<!-- .element: style="font-size: 0.3em" -->
Tableau créé à partir de 3 versions de la matrice de compatibilité kube-state-metrics.<!-- .element: style="font-size: 0.5em" -->
---
# Conclusion
Sujets pour aller plus loin...
- Mise à jour des dashboards "upstream" (`defaultv2/kubernetes-v2-kubelet.json`)
- Étude des Generic Ephemeral Volumes
- Stratégie d'upgrade de Kube-state-metrics
<style type="text/css">
p {
font-size: smaller;
}
.reveal ul ul li {
font-size: smaller;
}
.reveal ul li {
font-size: 0.6em;
}
.reveal section {
text-align: left;
}
}
.reveal h3 {
color: orange;
text-align: center;
border-bottom: 1px solid orange;
}
.reveal h1 {
color: orange;
text-align: center;
border-bottom: 1px solid orange;
margin-bottom: 0.4em;
font-size: 2em;
}
.reveal code {
color: aquamarine;
font-size: smaller;
}
.reveal table {
font-size: .4em;
}</style>