7 bonnes pratiques opĂ©rationnelles K8S đ
à découvrir dans notre dernier article de blog
1
Utiliser une stratégie orientée conteneur, tu devras !
1. Utiliser une stratégie orientée conteneur, tu devras !
Optimiser les images est une amĂ©lioration simple quand on parle dâaugmenter les performances de Kubernetes. Les applications conteneurisĂ©es qui sont conçues pour tourner sur des machines virtuelles contiennent souvent des librairies ou supplĂ©ment logique qui ne sont pas nĂ©cessaires dans le cas de dĂ©ploiement en environnement conteneurisĂ©. Adopter des images optimisĂ©es pour les conteneurs permet de rĂ©duire la taille des images et donc dâaccĂ©lĂ©rer le tĂ©lĂ©chargement des images et le lancement des conteneurs par Kubernetes.
Une image adaptĂ©e pour les conteneurs câest une image :
1
2
Spécifier un namespace par défaut, il faudra !
2. Spécifier un namespace par défaut, il faudra !
Lâutilisation des namespaces Kubernetes permet de sĂ©parer votre cluster en plusieurs environnements identifiĂ©s par diffĂ©rents noms et pouvant ĂȘtre managĂ©s par diffĂ©rents utilisateurs. Un des inconvĂ©nients Ă lâutilisation de kubectl câest que pour travailler dans un namespace particulier, disons oh-oh-oh-ns, vous devez ajouter le flag --namespace=oh-oh-oh-ns Ă la fin de chacune de vos commandes. Il est donc frĂ©quent d'oublier cette option et de se retrouver avec des objets tels que des dĂ©ploiements, des services, etc dans le mauvais namespace (ex : default).
Avec cette astuce, vous pouvez spécifier un namespace de préférence avant d'exécuter vos commandes kubectl. En utilisant la commande suivante, les commandes kubectl qui suivront seront exécutées en utilisant ce nouveau contexte et donc le namespace que vous avez choisi !
kubectl config set-context --current --namespace=oh-oh-oh-ns
2
3
Adoptes l'auto-complétion et ta vie changera !
3. Adoptes l'auto-complétion et ta vie changera !
Lâauto-complĂ©tion de kubectl est essentielle pour une utilisation quotidienne dâun cluster kubernetes. Elle vous permettra de gagner du temps sur la rĂ©daction des commandes mais Ă©galement de voir les options disponibles suivant les actions que vous souhaitez effectuer. Vous pouvez mettre en place lâauto-complĂ©tion bash par lâutilisation dâune commande simple :
echo "source <(kubectl completion bash)" >> ~/.bashrc
La commande ajoute lâauto-complĂ©tion au .bashrc, ainsi la prochaine fois que vous ouvrerez un shell, lâauto-complĂ©tion sera disponible.
Pour plus dâinformations : bash auto-complĂ©tion3
4
Stocker les configurations dans un outil de controle de version il faudra.
4. Stocker les configurations dans un outil de controle de version il faudra.
Stocker les fichiers configurations de votre cluster dans un outil de version vous permet de conserver lâĂ©volution de la configuration. Câest essentiel pour le suivi de cette derniĂšre puisque les objets Kubernetes sont amenĂ©s Ă ĂȘtre dĂ©truits et recrĂ©Ă©s.
Ăvitez au maximum dâeffectuer des changements de configuration directement sur les objets du cluster. Une fois appliquĂ©e sur un objet, la nouvelle configuration Ă©crase la prĂ©cĂ©dente. Impossible de revenir simplement Ă la version prĂ©cĂ©dente Ă moins dâavoir une mĂ©moire dâexception !
PrĂ©fĂ©rez donc lâutilisation d'outils de version tels que git, svn, mercurial et autres pour suivre les changements de configuration, faciliter les rollbacks et aider Ă la re-crĂ©ation et la restauration du cluster
4
5
Utilises des alias et du temps tu gagneras.
5. Utilises des alias et du temps tu gagneras.
La rédaction de commandes kubectl peut rapidement tourner au roman ! Pour y remédier et également accélérer le temps de rédaction vous pouvez mettre en place des alias. Plus besoin de taper kubectl un nombre incalculable de fois et votre clavier vous en remerciera !
Oui mais quels alias sont vraiment pertinents ? IBM a listé les alias à mettre en place pour couvrir les commandes les plus utilisées de kubectl :
5
6
Extraire du YAML Ă partir de commande kubectl
6. Extraire du YAML Ă partir de commande kubectl
kubectl applique du yaml à votre cluster, la plupart de ces commandes génÚrent donc des YAML complexes.
Utiliser le YAML gĂ©nĂ©rĂ© des commandes kubectl permet de se crĂ©er des bases de fichiers Kubernetes, cette base permet de se prĂ©munir dâun dĂ©marrage "from scratch". Extraire la sortie de kubectl donne accĂšs Ă la structure YAML de ces objets via l'utilisation de la commande dâĂ©dition ou de gĂ©nĂ©ration de kubectl.
Voici quelques exemples dâextractions :
kubectl run busybox --image=busybox --dry-run=client -o yaml --restart=Never > busybox.yaml
kubectl create job my-job --dry-run=client -o yaml --image=busybox -- date > job.yaml
kubectl get -o yaml deploy/nginx > nginx.yaml
6
7
La consommation des ressources tu afficheras.
7. La consommation des ressources tu afficheras.
Via la commande kubectl top, vous pouvez afficher la consommation de ressources des nodes et des pods de vos clusters. Câest lâune des commandes les plus utilisĂ©es pour un premier monitoring de ces objets. Elle permet un accĂšs rapide et simple Ă des informations essentielles Ă la fois sur la santĂ© et sur les coĂ»ts engendrĂ©s par le fonctionnement dâune application.
Accéder aux consommations des nodes :
⯠k top node
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
docker-desktop 4332m 72% 1585Mi 84%
Accéder aux consommations des pods :
⯠k top pods
NAME CPU(cores) MEMORY(bytes)
kuard-5795cd587d-8qtsd 1m 0Mi
kuard-5795cd587d-df4qp 1m 0Mi
kuard-5795cd587d-qsjt4 1m 0Mi
kuard-tm75s 1m 0Mi
7
8
En Minikube & KinD, des alliées tu trouveras.
8. En Minikube & KinD, des alliées tu trouveras.
Chez KIOWY on adore tout tester directement en production !
Câest faux, tellement faux que ça a mĂȘme Ă©tĂ© difficile Ă Ă©crire ! Mais la problĂ©matique reste : comment tester des objets Kubernetes en amont pour Ă©viter une catastrophe lors du dĂ©ploiement sur un cluster de production ? Utiliser Minikube ou KinD.
Ces solutions permettent de mettre en place un cluster local directement sur votre machine ! Minikube est rapide et simple Ă installer et se dĂ©marre directement via la commande minikube start. Une fois lancĂ© vous pouvez procĂ©der Ă des actions comme sur nâimporte quel cluster. Quant Ă KinD, abrĂ©viation de Kubernetes in Docker, il sâagit dâun outil qui permet de dĂ©ployer un cluster directement dans Docker via la commande kind create cluster
Envie dâessayer ? Voici quelques liens pour vous aider :
Minikube
KinD
8
9
Nettoyer les images Docker inutilisées, tu devras !
9. Nettoyer les images Docker inutilisées, tu devras !
Kubernetes met en place un processus de "garbage collection" qui nettoie les images inutilisĂ©es. Ce processus est gĂ©rĂ© par le Kubelet qui tourne sur chaque node du cluster. Le Kubelet surveille automatiquement les images et supprime de maniĂšre pĂ©riodique toutes les images inutilisĂ©es. Lâalgorithme Ă©tablit lâordre de suppression en fonction du stockage utilisĂ© par lâimage et Ă quand remonte sa derniĂšre utilisation. (Une image lourde inutilisĂ©e depuis une semaine sera supprimĂ©e avant une image de plus petite taille ayant Ă©tĂ© utilisĂ©e pour la derniĂšre fois hier)
Cette fonctionnalitĂ© peut ĂȘtre modifiĂ©e et adaptĂ©e suivant le besoin ! Vous pouvez dĂ©cider quand le processus de "garbage collection" doit s'exĂ©cuter suivant lâutilisation du disque est dĂ©finissant le seuil de dĂ©clenchement du processus (high-threshold) et lâutilisation du disque quâil doit chercher Ă atteindre (low-threshold).
Pour définir ces seuils vous utiliserez deux flags de configuration du Kubelet :
Pour les définir, rendez-vous dans les variables environnements du Kubelet (/var/lib/kubelet/kubeadm-flags.env) et ajouter :
KUBELET_KUBEADM_ARGS="--image-gc-high-threshold=60 --image-gc-low-threshold=50"
Une fois fait il ne vous reste plus qu'à redémarrer de Kubelet
systemctl daemon-reload
systemctl restart kubelet
9
10
La qualité de service de tes applications, tu définiras.
10. La qualité de service de tes applications, tu définiras.
Le Scheduler de Kubernetes attribue les instances aux nĆuds suivant un algorithme prĂ©cis. Pour lâaider dans sa tĂąche vous pouvez spĂ©cifier les contraintes en ressources de ce dont vous demandez le dĂ©ploiement. En dĂ©finissant les requĂȘtes et les limites de consommations ressources (CPU, RAM, etc..), vous optimisez le fonctionnement du scheduler et la stabilitĂ© de votre cluster par la mĂȘme occasion.
La spĂ©cification de ces requĂȘtes et ses limites vous permet de dĂ©finir un profil pour votre application, ce profil dĂ©finit la qualitĂ© de service de votre application ce qui va permettre au scheduler d'adapter au mieux sa stratĂ©gie dâattribution.
Pour dĂ©finir ce profil, il suffit dâajouter ces spĂ©cifications Ă votre application:
resources:
requests:
memory: 1Gi
cpu: 250m
limits:
memory: 2.5Gi
cpu: 750m
DĂ©finir un profil adaptĂ© au fonctionnement du micro-service fait partie des bonnes pratiques qui ont le plus dâimpact sur le bon fonctionnement et la stabilitĂ© du cluster. Elle permet Ă la fois au scheduler de choisir le nĆud idĂ©al pour l'application Ă dĂ©ployer mais aussi de dĂ©finir la place de lâapplication dans la hiĂ©rarchie d'Ă©viction. Maximisant ainsi les performances du nĆud et du cluster.
10
11
Entre les namespaces Kubernetes, tu navigueras.
11. Entre les namespaces Kubernetes, tu navigueras.
Pour effectuer des actions sur différents namespaces ou différents clusters, il est possible de naviguer entre eux en quelques commandes.
Mais saviez-vous que des outils peuvent simplifier votre navigation ?
kubectx et kubens font partie de ces outils, ils permettent de naviguer respectivement entre les contextes et entre les namespaces. Super simple Ă mettre en place, ils sont tous les deux disponibles au sein du mĂȘme dĂ©pĂŽt Github : https://github.com/ahmetb/kubectx/
kubectx
kubens
11
12
Les accÚs génériques à kubectl, redouter tu dois.
12. Les accÚs génériques à kubectl, redouter tu dois.
Prenez garde aux accĂšs que vous accordez aux utilisateurs qui utilisent kubectl. Kubernetes est construit pour ĂȘtre utilisĂ© par une multitude d'Ă©quipes par cluster, offrant des accĂšs sans restriction Ă de nombreuses fonctionnalitĂ©s, notamment administratives, qui permettent de gĂ©rer toutes les facettes du cluster.
Veillez donc Ă votre chaĂźne de permission ainsi quâaux permissions que vous accordez autant aux utilisateurs humains quâĂ vos comptes de services ! Ă ce jour la meilleure solution reste une bonne classification des permissions suivant les environnements virtuels (namespace) et suivant les acteurs qui opĂšrent dans ces environnements via l'utilisation de politique RBAC. DiffĂ©rencier les diffĂ©rents niveaux et façon dây accĂ©der. Une bonne pratique concernant la gestion des permissions est la fermeture de tous les accĂšs pour ensuite procĂ©der Ă lâouverture des fonctionnalitĂ©s au compte-gouttes suivant les acteurs.
12
13
La stratégie d'éviction des pods, tu adapteras
13. La stratégie d'éviction des pods, tu adapteras
Une fois dĂ©ployĂ©, le PDB devient obligatoire pour tous les dĂ©ploiements qui contiennent plus dâune instance avec lesquels il est associĂ©.
Pour crĂ©er un PDB, il suffit dâappliquer le YAML correspondant au cluster. Via le label selector vous dĂ©finissez les applications sur lequel le PDB sâapplique. Il faut bien comprendre que le PDB ne sâapplique qu'en cas les perturbations âvolontairesâ du cluster. Dans le cas de la perte dâune machine, il ne pourra pas sâappliquer.
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
name: pdb-pour-les-app-a
spec:
minAvailable: 2
selector:
matchLabels:
app: app-a
Exemple de PDB pour toutes les applications avec le label app-a
Dans cet exemple, la spĂ©cification minAvailable dĂ©fini pour les applications ayant le label app-a quâen cas de node drain, lâevinction laissera en place deux instances de lâapplication.
13
14
Etendre kubectl en traitant les sorties de type raw
14. Etendre kubectl en traitant les sorties de type raw
kubectl propose de dĂ©tailler les ressources et instances de ressource de lâapi-server. Ce qui permet dâaccĂ©der Ă tous les champs disponibles ainsi qu'Ă leurs valeurs. En utilisant le flag -o kubectl vous pouvez afficher la sortie dĂ©taillĂ©e dâune ressource en YAML...
kubectl get deployments -o yaml
... mais aussi en JSON
kubectl get deployments -o yaml
Ă partir de ce type de sortie, vous avez de nombreuses possibilitĂ©s pour traiter, adapter ou Ă©tendre la sortie de votre commande. Par exemple, en utilisant la sortie dĂ©taillĂ©e au format JSON, vous pouvez associer lâoutil jq pour chercher dans la sortie les dĂ©ploiements qui contiennent des rĂ©plicas en erreur :
kubectl get deployments | jq '.items[] | {name: .metadata.name, replicas: .status.replicas, available: (.status.availableReplicas // 0), unavailable: (.status.unavailableReplicas // 0)} | select (.unavailable > 0)'
14
15
Configurez l'affinité des nodes
15. Configurez l'affinité des nodes
Les machines dâun cluster sont rarement toutes identiques et comme nous lâavons vu dans lâastuce du jour 10, câest le rĂŽle du scheduler de choisir le nĆud le mieux adaptĂ© pour dĂ©ployer les pods de notre application. Mais il est Ă©galement possible de plus ou moins dâorienter son choix par le biais de lâaffinitĂ© des noeuds (Node Affinity) et de lâaffinitĂ© des pods (Pod Affinity, mais elle on en reparlera plus tard đ§).
LâaffinitĂ© suivant le nĆud permet au scheduler de sĂ©lectionner un nĆud suivant une de ses caractĂ©ristiques. Disons que soyez en possession de deux nĆuds, un avec une grande puissance CPU (32 cĆurs) et lâautre plus orientĂ© RAM avec moins de cĆurs mais mĂ©moire DDR4. Si ces spĂ©cificitĂ©s sont dĂ©crites via labels, il vous suffira de dĂ©crire une affinitĂ© de nĆud pour orienter le choix du scheduler vers la machine orientĂ© CPU par nodeSelector.
âŠ
nodeSelector:
cpuType: 32core
Votre affinitĂ© est crĂ©Ă©e ! Vous pouvez adapter comment et avec quelle force elle sâapplique en utilisant les options :
Il existe Ă©galement dâautres options pour effectuer des affinitĂ©s sur combinaisons logiques. Pour plus dâinformations : Docs Kubernetes - Assigning Pods to Nodes
15
16
Utilisez des sondes (probes)
16. Utilisez des sondes (probes)
Probe est le nom quâon donne aux sondes qui permettent de sâassurer de la santĂ© dâune application. FidĂšle Ă sa philosophie REST, Kubernetes autorise la dĂ©finition de sondes. Lâoutil utilise lui-mĂȘme ce type de mĂ©canisme notamment dans le Kubelet pour s'assurer de la bonne santĂ© des pods et des applications au sein d'un nĆud.
On distingue deux types de probes :
DĂ©finissez vos sondes en suivant le formalisme du Kubelet pour que la gestion de votre application sâintĂšgre Ă la gestion des autres Ă©lĂ©ments du cluster. Une fois configurĂ©, il ne vous reste qu'Ă dĂ©finir les actions qui seront effectuer suivants les retours de sondes en termes de dĂ©lais, timeouts et retries.
16
17
Taints & Tolérations des pods
17. Taints & Tolérations des pods
Saviez-vous que les nĆuds ont une odeur particuliĂšre ? Non, câest pourtant tout le sujet de notre astuce du 17 dĂ©cembre. Kubernetes permet de sâassurer que des pods ne se dĂ©ploient pas sur un nĆud spĂ©cifique via la notion de Taints ( qui nâa pas de traduction directe en français mais qui se rapproche de lâidĂ©e dâentacher ). Le Taints sâapplique Ă un nĆud et a un effet opposĂ© Ă lâaffinitĂ©, avec un peu plus d'agressive. Cette marque repousse les pods en les empĂȘchant de se dĂ©ployer sur le nĆud sur lequel la marque est appliquĂ©e. Dans un cluster Kubernetes par dĂ©faut, câest ce mĂ©canisme qui permet d'orienter le dĂ©ploiement des applications sur des nĆuds de type worker plutĂŽt que sur le ou les nĆuds de type controller.
Pour appliquer un taint, vous utiliserez lâoption kubernetes du mĂȘme nom.
kubectl taint nodes backup1=backups-only:NoSchedule
Pour supprimer un taint, il suffit de spécifier - en fin de commande :
kubectl taint nodes backup1=backups-only:NoSchedule-
Pour permettre Ă des pods de se dĂ©ployer malgrĂ© un taint, il faut que les pods en question est une tolĂ©ration dans leurs spĂ©cifications. Le mĂ©canisme de Taints & TolĂ©rations est particuliĂšrement utile si vous voulez dĂ©dier un nĆud Ă l'exĂ©cution de Jobs de backup par exemple. Pour permet Ă un pod de passer outre un taint de nommer backup-only, ajoutez la tolĂ©ration aux specs des pods a dĂ©ployer :
spec:
tolerations:
- key: "backup1"
operator: "Equal"
value: "backups-only"
effect: "NoSchedule"
17
18
Les well-known labels, tu utiliseras
18. Les well-known labels, tu utiliseras
On a vu hier quâon pouvait appliquer les taints & tolĂ©rations en utilisant les labels, et on verra dans les prochains jours que câest Ă©galement le cas pour tous les autres mĂ©canismes dâaffinitĂ©s. Pour Ă©viter dâavoir Ă dĂ©finir des labels et vous aidez Ă identifier les diffĂ©rents Ă©lĂ©ments, Kubernetes attribue des labels par dĂ©faut suivant les objets, les machines et leurs caractĂ©ristiques (ex : kubernetes.io/arch=amd64). Ces labels sont qualifiĂ©s de Well-Known et sont listĂ©s dans la documentation de Kubernetes
Liste des well-known labels : Well-Known Labels, Annotations and Taints
18
19
Les pods orphelins, tu oublieras.
19. Les pods orphelins, tu oublieras.
QualifiĂ©s par la communautĂ© de "Naked" Pods, les pods dits âorphelinsâ sont ceux qui ne sont pas liĂ©s Ă un contrĂŽleur de plus haut niveau (ReplicaSets, Deployments, ...). Comme ils ne sont pas managĂ©s, ils ne seront pas relancĂ©s en cas d'erreur ou d'Ă©chec du nĆud. En utilisant des objets Deployment et donc des ReplicasSet, vous assurez le nombre de pods que vous dĂ©sirez voir disponible et pouvez Ă©galement spĂ©cifier la stratĂ©gie Ă adopter pour remplacer les pods. Il est donc toujours prĂ©fĂ©rable dâutiliser ces contrĂŽleurs de haut niveau plutĂŽt que de dĂ©ployer des pods directement.
Pour des cas particuliers oĂč il vous semble quâil soit nĂ©cessaire d'utiliser un pod sans controlleur de plus haut niveau, par exemple un traitement qui ne doit pas redĂ©marrer (option : restartPolicy: Never), la bonne practique reste dâutiliser lâobjet Job.
19
20
Des rÚgles d'affinités, tu mettras en place
20. Des rÚgles d'affinités, tu mettras en place
Nous avons parlĂ© dâaffinitĂ©s pour les nĆuds mais saviez-vous que vous pouvez dĂ©finir des affinitĂ©s inter-pods ?
Vous pouvez spĂ©cifier dans les spĂ©cificitĂ©s de vos pods, des affinitĂ©s et anti-affinitĂ©s pour dĂ©finir la rĂ©partition et les regroupements des pods dans les nĆuds du cluster. Ces dĂ©finitions sont Ă lâĂ©chelle des pods et sont traitĂ©es par le scheduler. SpĂ©cifier les affinitĂ©s inter-pods permet par exemple de dĂ©finir quâun web-serveur est toujours dĂ©ployĂ© Ă cĂŽtĂ© de sa base de donnĂ©es, et que deux rĂ©plicas dâune base de donnĂ©es ne sont jamais dĂ©ployĂ©s sur le mĂȘme noeud pour assurer la pĂ©rennitĂ© de la base en cas d'Ă©chec d'un noeud.
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- web-store
topologyKey: "kubernetes.io/hostname"
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- store
topologyKey: "kubernetes.io/hostname"
20
21
DĂ©finissez des Pod Security Standards
21. DĂ©finissez des Pod Security Standards
Les Pod Security Standards définissent les politiques de sécurité à appliquer aux pods et se décomposent en trois niveaux.
Ce dĂ©coupage en niveau vient remplacer lâutilisation des Pod Security Policies qui sont dĂ©prĂ©ciĂ©s depuis Kuberetes v1.21 et seront supprimĂ©es du projet en v1.25.
Plus dâinformation sur :
21
22
DĂ©ployez votre cluster au plus prĂšs de vos utilisateurs finaux
22. DĂ©ployez votre cluster au plus prĂšs de vos utilisateurs finaux
On sait comme les latences rĂ©seaux peuvent ĂȘtre frustrantes, et lâutilisation de technologies cloud nâĂ©chappe pas au problĂšmes. Pour les limiter au maximum, vous pouvez rĂ©duire la distance physique entre les nĆuds de votre cluster et les utilisateurs de vos applications.
La plupart des fournisseurs de cloud possĂšdent des datacenters dans de nombreuses zones gĂ©ographiques. Choisir une zone proche des finaux permet de contribuer Ă une latence aussi basse que possible. Lors de vos dĂ©ploiements, gardez en tĂȘte que suivant la zone de dĂ©ploiement et le fournisseur choisi vous pourrez rencontrer des limitations ou des cas particuliers de restrictions qui peuvent influer sur la disponibilitĂ© de vos applications.
22
23
Utilisez les métriques comme base d'information
23. Utilisez les métriques comme base d'information
Nous lâavons vu le jour n°16, Kubernetes vous permet de mettre en place des sondes (probes) pour que les scheduler puisse sâassurer de lâĂ©tat de santĂ© de vos pods et prendre les actions nĂ©cessaire pour que votre cluster atteigne lâĂ©tat que vous avez dĂ©fini. Mais au-delĂ dâune fiabilisation du fonctionnement mĂȘme de votre cluster, les mĂ©triques ainsi que les logs vous donnent une base dâinformation solide sur lâĂ©tat de tous les objets dĂ©ployĂ©s dans votre cluster. Vous pouvez mettre en place un outil dâagrĂ©gation de logs tel que fluentd pour avoir une vue d'ensemble des logs du cluster. Les sondes et les systĂšmes de suivis vous permettent dâintĂ©grer simplement des outils de monitoring tels que par exemple Prometheus associĂ©s Ă Grafana pour avoir un dashboard qui regroupe un maximum dâinformations et suivre les performances de votre cluster.
23
24
Optimisez etcd
24. Optimisez etcd
ETCD câest la base de connaissance stateful de Kubernetes, sous la forme dâune base de donnĂ©e clĂ©-valeur stockĂ© dans le control plane du cluster. Un trafic dâinformations important se fait entre lâobjet etcd et le kube-apiserver. Quand câest possible, choyer ce point de votre architecture, en mettant ces Ă©lĂ©ments sur le mĂȘme nĆud pour rĂ©duire la latence rĂ©seau par exemple ou en dĂ©ployant le nĆud qui les contient sur une machine avec SSD avec haut dĂ©bit limitant les latences sur les entrĂ©es/sorties. Ce type d'optimisation technique maximisera les performances de etcd.
Câest sur cette derniĂšre astuces que sâachĂšve notre Calendrier de lâAvent du Cloud ! đâïž On espĂšre que vous avez appris de ces astuces et bonnes pratiques. Besoin dâen savoir plus sur Kubernetes, le Cloud ou les infrastructures "as a Service" ? Que se soit pour discuter dâun point en particulier, d'un besoin dâaccompagnement sur un projet ou de formation :
24