# Kubernetes 1.23<!-- .element: style="font-size: 2.5em" -->
#### Démo équipe Monitoring 15/06/2023
---
# Sujets
- ChangeLog Kubernetes 1.22 et 1.23
- Versions de CoreDNS et Kubernetes
- Matrice de compatibilité Kube-state-metrics
- Bonus
---
# Kubernetes 1.22 Features & Deprecations<!-- .element: style="font-size: 1.5em" -->
- Suppression de plusieurs apiservices en beta (IngressClass, TookenReview etc.)
- Ajout de nouveaux apiservices (cni, cce, proxy etc.)
- Utilisation du v2 cgroup api pour l'amélioration de la qualité de service
- ReadWriteOncePod: "access mode" pour les PV/PVC
- L'option minReadySeconds disponible pour les StatefulSets
- Arrivé du label kubernetes.io/metadata.name pour tous les namespaces
---
# Kubernetes 1.22 Features & Deprecations<!-- .element: style="font-size: 1.5em" -->
- Plusieurs métriques apiserver (apiserver_delegated_authz_request_total, apiserver_flowcontrol_latest_s)
- Une nouvelle métrique container_start_time_seconds (exposée par kubelet)
- Une nouvelle colonne LAST RESTART quand on fait (kubectl get pods output)
- Une nouvelle métrique rest_client_rate_limiter_duration_seconds_*
- La suppression du champ topologyKeys (pour les services) remplacé par topology-aware et/ou traffic policy
- Trois nouvelles metriques pour job controller: job_sync_total,job_sync_duration_seconds, job_finished_total
---
# Kubernetes 1.23 Features<!-- .element: style="font-size: 1.5em" -->
- Encore plusieurs metrics apiserver (apiserver_cache_list_total, apiserver_storage_list_total ...)
- Le champ OS au niveau des spec du pod.
- Ephemeral containers passe en beta
- Apiserver_longrunning_requests metric va remplacer apiserver_longrunning_gauge metric
- StatefulSetAutoDeletePVC quand le statefulset est supprimé.
- Possibilité de faire des readinessProbes avec du GRPC
---
# CoreDNS et Kubernetes
- Kubeadm déploie CoreDNS-1.8.0 sur K8S-1.21 et CoreDNS-1.8.6 sur K8S-1.23
- Sur FE, CoreDNS est en 1.8.4 sur K8S-1.19, K8S-1.21 et K8S-1.23
- Sur AWS, CoreDNS est en 1.8.7 sur K8S-1.23
Conséquences :
- FE : pas de changement
- AWS : pas de changement
---
# Kube-state-metrics
Nous utilisons actuellement Kube-state-metrics 2.2.0 (clusters >= 1.18)<!-- .element: style="font-size: 0.5em" -->
La version 2.2.4 de Kube-state-metrics est la première compatible à la version v1.23 de Kubernetes.<!-- .element: style="font-size: 0.5em" -->
| Kube-state-metrics | K8s 1.21 | K8s 1.22 | K8s 1.23 |
| ------------------ | -------- | -------- | -------- |
| **v2.1.1** | ✓ | -/✓ | -/✓ |
| **v2.2.1** | ✓ | ✓ | -/✓ |
| **v2.2.4** | ✓ | ✓ | ✓ |
| **v2.3.0** | ✓ | ✓ | ✓ |
✓ 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" -->
---
# StatefulSetAutoDeletePVC
```yaml=
apiVersion: apps/v1
kind: StatefulSet
…
spec:
persistentVolumeClaimRetentionPolicy:
whenDeleted: Retain
whenScaled: Delete
```
---
# Ephemeral conatiner
- Devenu stable depuis la version 1.23
- Permet de debug les containers avec des images distroless : pas de shell

---
# Conclusion
- Pas de supression ni de renommage de métriques.
- Arrivée de nouvelles métriques surout pour apiserver
- 7 métriques avec un nouveau labels
- Plusieurs métriques qui sont passé à stable
- Aucun impact sur les rules et dashboards
<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>