Vous avez pour objectif 2022 de monter en compétences sur Kubernetes ou de simplement concrétiser votre savoir-faire ? Cet article est là pour vous aider à préparer sereinement votre passage de la certification Certified Kubernetes Administrator (CKA). On revoit ensemble son contenu, les choses à savoir, les commandes intéressantes et comment se former pour réussir cette certification !

La CKA en bref

La CKA (Certified Kubernetes Administrator) est une certification créée par la Cloud Native Computing Foundation (CNCF) en collaboration avec The Linux Foundation pour aider à développer l'écosystème Kubernetes.

Logo de la CKA
Logo de la CKA

Il n’y a pas de prérequis particulier pour passer cette certification à l’exception d’avoir acquis les connaissances et compétences adéquates au préalable.

Cette certification coûte aujourd’hui (date de sortie de l’article) 375$. Je vous conseille d’écumer Internet lorsque vous souhaiterez acheter votre bon de passage, des réductions commerciales sont souvent proposées. Le bon de passage est valable 1 an seulement, je conseille de l'acheter à la fin de vos révisions pour ne pas être pressé par le temps. À l’achat de la CKA, vous obtiendrez un droit de repassage et 2 sessions de killer.sh (nous en parlons plus en détail plus bas).

C’est un examen fondé sur les performances, en 2h vous devrez répondre entre 15 et 20 questions. Cela laisse peu de place à l’hésitation et à la relecture. Je vous conseille d’être prêt(e) psychologiquement, de préparer des alias et de connaître les options qui vous permettront d’obtenir des résultats le plus rapidement possible. Vous devez obtenir 66% de bonnes réponses pour réussir l’examen et vous serez informé(e) de vos résultats sous 24h. Une fois obtenue, la CKA est valide 3 ans, après il faudra la renouveler.

Vous n’avez évidemment pas à tout retenir. Lors de l’examen, différents sites vous sont autorisés à la consultation. Je vous conseille de préparer des raccourcis et de vous entraîner à naviguer dans la documentation Kubernetes pour trouver les informations nécessaires le plus rapidement possible. Je vous propose quelques liens plus loin dans l’article.

Dernière précision : l’examen est en anglais, of course !

L’ensemble des détails concernant l’examen est développé ici.

On doit savoir/apprendre quoi ?

La CKA a pour objectif de tester vos compétences techniques en matière d’administration Kubernetes. L’examen est composé de 5 sujets principaux qui ont des taux de représentation différents lors de l’examen :

Domaine Représentation à l'examen
Architecture Cluster, Installation et Configuration 25%
Charges de travail et Planification 15%
Services et Réseaux 20%
Stockage 10%
Dépannage 30%

À défaut de pouvoir dévoiler des questions de l’examen par souci de confidentialité, je peux revoir avec vous les connaissances et compétences demandées en détail.

Architecture Cluster, Installation et Configuration - 25%

Comme le nom de la certification l’indique, vous devez savoir administrer un cluster Kubernetes. Vous devez naturellement connaître et comprendre son architecture, savoir l’installer et le configurer.

Programme Ce qu'il faut savoir
Gérer RBAC (Role Based Access Control) Savoir créer, modifier et supprimer des RBAC
Utiliser Kubeadm pour installer un cluster basique Kubernetes Être capable de créer un cluster Kubernetes avec l’outil kubeadm
Gérer un cluster Kubernetes hautement disponible Savoir ajouter des noeuds au cluster et configurer le cluster pour le rendre hautement disponible
Provisionner l’infrastructure sous-jacente pour déployer un cluster Kubernetes Être capable de préparer le terrain à l’installation d’un cluster Kubernetes (réseau, stockage, dépendances, etc.)
Réaliser une montée de version du cluster Kubernetes en utilisant Kubeadm Savoir réaliser une montée de version d’un cluster Kubernetes. N’oubliez pas d’upgrade les noeuds: conservez ce lien
Implémenter la sauvegarde et la restauration de ETCD Comme son nom l’indique il faut savoir sauvegarder et restaurer ETCD, je vous conseille de vous entraîner et de sauvegarder ce lien de documentation précieusement

Charges de travail et Planification - 15%

Kubernetes, en tant qu’orchestrateur, apporte notamment des fonctionnalités de scaling et de gestion des ressources systèmes. Pour assurer la disponibilité de ses applications, l’administrateur se doit de comprendre les concepts qui permettent cette prouesse et surtout de savoir les configurer techniquement.

Programme Ce qu’il faut savoir
Comprendre les déploiements et comment réaliser des mises à jour continue et des retours en arrière Savoir faire des rollbacks et rollouts de déploiements
Utiliser des ConfigMaps et des Secrets pour configurer les applications Savoir créer, modifier et supprimer des variables & secrets au travers d’objets configmaps et secrets et les mettre à disposition d’un pod
Savoir comment mettre à l'échelle une application Savoir scale un pod/déploiement. Vous pouvez suivre ce tutoriel
Comprendre les primitives utilisées pour créer des déploiements applicatifs robustes et auto-régénérants. Savoir qu’il faut préférer des déploiements à des pods “nus”, définir des stratégies de déploiement et tagger les ressources
Comprendre comment les limites de ressources peuvent impacter la planification des Pods Savoir limiter les ressources attribuées à un pod et comprendre leurs impacts
Connaissance de la gestion des manifests et des outils de création de modèles communs Savoir créer, modifier et appliquer des manifests Kubernetes

Les manifests Kubernetes sont des composants que vous devez savoir lire et manipuler. Vous pouvez trouver des manifests de tous les objets Kubernetes dans la documentation officielle. Vous pouvez les générer à partir de commandes (pas tous les objets) ou récupérer les manifests d’objets existants dans le cluster :

Générer un manifest :

# Générer un manifest de pod avec run
kubectl run <pod_name> --image=nginx --dry-run=client -o yaml > pod.yaml

# Générer un manifest de déploiement avec create
kubectl create deployment <deployment_name> --image=nginx --dry-run=client -o yaml > deployment.yaml

Récupérer un manifest :

kubectl get secret <secret_name> -o yaml > secret.yaml

Créer un objet à partir d’un manifest :

kubectl create -f ./<manifest_name>
kubectl apply -f ./<manifest_name>

Services et Réseaux - 20%

Au sein d’un cluster Kubernetes, des éléments sont amenés à communiquer, des flux à être routés et des points de terminaison à être exposés. Cette partie insiste sur les différents concepts réseaux de Kubernetes.

Programme Ce qu’il faut savoir
Comprendre la configuration de la mise en réseau de l'hôte sur les nœuds du cluster Comprendre le réseau avec Kubernetes
Comprendre la connectivité entre les pods Comprendre le réseau Kubernetes et savoir créer des politiques réseaux adéquates pour limiter les flux au strict nécessaire.
Comprendre les types de services et les points de terminaison ClusterIP, NodePort, LoadBalancer Comprendre l'exposition externe des ressources
Savoir utiliser les contrôleurs Ingress et les ressources Ingress Savoir créer et configurer des Ingress Comprendre les Ingress Controller
Savoir configurer et utiliser CoreDNS Comprendre la résolution de nom interne à Kubernetes
Choisir un plugin d'interface réseau de conteneur (CNI) approprié Savoir choisir une CNI en fonction de son besoin

La partie réseau représente 20% du contenu de l’examen. Il y a de fortes chances que l’on vous demande de créer au moins une politique réseau, un point de terminaison ou un ingress.

Je vous offre ce lien de documentation qui possède la commande d’installation du plugin réseau Weave : https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/

Stockage - 10%

La question de la gestion du stockage représente 10% du contenu de l’examen. Savoir créer des espaces de stockage et les mettre à disposition d’un pod peut paraître simple mais demande de comprendre plusieurs termes et mécaniques.

Programme Ce qu’il faut savoir
Comprendre les classes de stockage et les volumes persistants Documentation classes de stockage Documentation des volumes persistants
Comprendre le mode de volume, les modes d'accès et les politiques de récupération des volumes Documentation sur le mode de volume Documentation sur les modes d’accès Documentation sur les politiques de récupération des volumes
Comprendre la primitive de revendication de volume persistant Savoir créer un PVC (Persistent Volume Claim) à partir d’un manifest YAML et l’afficher
Savoir configurer des applications avec stockage persistant Savoir brancher un pod avec un stockage persistant

Dépannage - 30%

La compétence la plus importante d’un administrateur est sa capacité à résoudre les problèmes. Kubernetes est une usine relativement complexe dont il faut comprendre les mécaniques et l’emplacement de l’information pertinente vis-à-vis d’une défaillance. Lors de l’examen vous serez amené(e) à réaliser du live debug.

Programme Ce qu’il faut savoir
Évaluer la journalisation des clusters et des nœuds Savoir trouver l’origine d’une défaillance du Cluster
Comprendre comment surveiller les applications Savoir lire et comprendre les logs d’un pod, trouver l’origine d’une défaillance
Gérer les journaux stdout et stderr du conteneur Afficher les logs d’un pod
Résoudre l'échec de l'application Comprendre les logs d’un pod
Résoudre la défaillance d'un composant de cluster Savoir trouver l’origine d’une défaillance du Cluster
Résoudre les problèmes de mise en réseau Trouver l’origine d’un problème réseau. Faire attention aux sélecteurs et ports des services et règles Ingress

Voici la liste des commandes qui peuvent vous êtres utiles pour identifier la cause d’un dysfonctionnement sur un cluster Kubernetes :

Pour essayer de trouver la défaillance d’une application :

  • Vérifier l’état du pod : kubectl get pods
  • Voir les évènements liés au pod : kubectl describe pod <pod_name>
  • Voir les logs du pod (en live) : kubectl logs -f <pod_name>
  • Voir les endpoints de services : kubectl get endpoints <service_name>
  • Exécuter une commande depuis un pod : kubectl exec <pod_name> -- <command>
  • etc.

Il y a un travail important de raisonnement pour établir l’origine d’une défaillance et sa solution. C’est à ce moment que vos connaissances théoriques de Kubernetes et votre capacité d’analyse seront mises à l’épreuve.

Kubernetes propose aussi une page de documentation pour vous aider à trouver l’origine de la défaillance d’une application : https://kubernetes.io/docs/tasks/debug-application-cluster/debug-application/

Il existe aussi ce diagramme qui peut vous apprendre les mécanismes logiques de débugging d’un déploiement (mais il ne peut pas être consulté lors de l’examen) : https://learnk8s.io/troubleshooting-deployments

Pour essayer de trouver la défaillance du control plane :

  • Voir les noeuds : kubectl get nodes
  • Vérifier l'état des pods du système : kubectl get pods -n kube-system
  • Vérifier l'état des services sur le noeud maître :
    • service kube-apiserver status
    • service kube-controller-manager status
    • service kube-scheduler status
  • Vérifier l'état des services sur les noeuds :
    • service kubelet status
    • service kube-proxy status
  • Vérifier les logs du control-plane :
    • kubectl logs kube-apiserver-master -n kube-system
    • journalctl -u kube-apiserver

Kubernetes propose aussi une page de documentation pour vous aider à trouver l’origine d’une défaillance Cluster : https://kubernetes.io/docs/tasks/debug-application-cluster/debug-cluster/

Pour essayer de trouver la défaillance d’un noeud :

  • Voir les noeuds: kubectl get nodes
  • Voir un noeud en détail : kubectl describe node <node_name>
  • Commandes à exécuter sur le noeud directement :
    • Voir les performances: top
    • Voir l'espace disque : df -h
    • Voir le status de kubelet : service kubelet status
    • Voir les logs de kubelet : journalctl -u kubelet
    • Vérifiez les certificats: openssl x509 -in /var/lib/kubelet/worker-1.crt -text

Se former

Il existe 2 solutions pour se former :

  • Soit la formation en autodidacte, avec des ressources gratuites ou payantes
  • Soit la formation organisée, comme nous proposons chez WeScale Training

Si vous souhaitez vous faire accompagner dans la préparation de la CKA ou, plus globalement, monter en compétence sur Kubernetes, sachez que WeScale Training vous propose un parcours de formation progressif et immersif sur le sujet. À travers des cours, des conseils, des retex de nos consultants-formateurs et des labs, ce parcours de formation vous permet de gagner en maîtrise sur tous les aspects d'une application conteneurisée et exploitée sur Kubernetes et d'aller passer votre CKA sereinement.

Si vous choisissez la voie de l'auto-formation, je vous conseille cette formation vidéo de Udemy. Le cours est agrémenté d’exercices sur de vrais clusters Kubernetes. Des examens blancs vous sont proposés à la fin de la formation, ils sont intéressants à réaliser, notamment pour se confronter à la montre.

Comme évoqué précédemment, avec l’achat de la CKA vous obtenez 2 sessions pour le système de simulation de CKA de killer.sh. Une session équivaut à un cluster Kubernetes disponible pendant 36h. Vous êtes mis(e) dans les conditions réelles de l’examen, vous n’avez que 2h pour répondre aux questions. Ensuite vous aurez accès aux réponses. Vous pouvez continuer ou réinitialiser le cluster. Les 2 sessions contiennent le même pool de questions : vous avez exactement les mêmes pour chaque session. Les examens de killer.sh sont plus difficiles que l’examen réel, il est très complexe de le réussir dans le temps imparti. Je vous conseille néanmoins d’exploiter ces 2 sessions à leur maximum, les questions étant très similaires à celles de l’examen.

À mes yeux, les 2 sessions offertes avec l’achat du bon de passage sont suffisantes pour entreprendre l’examen sereinement mais si vous en ressentez le besoin n’hésitez pas à acheter d’autres sessions (~30€).

Se préparer

Lors de l'examen, vous l’avez compris, le temps est précieux, vous devrez faire en sorte d’optimiser votre temps au maximum.

Outre le fait de s’être formé(e) correctement et de savoir naviguer dans la documentation, vous pouvez aussi préparer des raccourcis vers les pages que vous serez amené(e) à consulter lors de l’examen. Voici la liste des sites autorisés, enregistrez-les :

Détail important à rappeler, vous n’avez le droit d’ouvrir qu’un seul onglet en plus que de celui de l’examen !

N’hésitez pas à préparer des liens précis de documentation comme ceux concernant les networks policies, les secrets, le cheatsheet, etc. que vous serez sûrement amené(e) à consulter. Je vous ai donné plusieurs liens de documentation tout le long de cet article, sauvegardez ceux qui vous paraissent les plus pertinents à vos yeux. Faites bien attention lorsque vous cliquez sur un lien : celui-ci peut vous rediriger vers des sites externes non autorisés à l’accès lors de l’examen !

Vous pouvez aussi, dès le début de l'examen, préparer des alias de commandes pour vous faire gagner du temps. Certains vous sont fournis dans le cheatsheet Kubernetes et donc consultables lors de l’examen. Si vous souhaitez utiliser des alias, entraînez-vous avec, ne commencez pas à les utiliser lors de l’examen.

Un dernier point de précision : maîtriser vi est un must have qui vous permettra de gagner un temps précieux. Il existe de nombreux tutoriels pour apprendre et maîtriser vi. Pour s’améliorer de manière ludique je vous conseille vim-adventures et l’application mobile Vim Master.

Le jour de l’examen

Vous êtes prêt(e), c’est le grand jour ! Vous avez trouvé une salle close où absolument personne ne vous dérangera pour les 2 prochaines heures. Votre bureau est débarrassé de tout élément autre que le clavier et votre souris. Vos appareils électroniques sont éteints. Votre caméra et micro sont fonctionnels. Vous avez votre carte d’identité à portée de main. Super !

Attention pour les linuxiens, le site pour passer l’examen peut être “capricieux” si vous utilisez Wayland. Utilisez xorg ou préférez un autre ordinateur avec Windows.

Toutes les informations concernant l’examen à distance sont ici.

Pour vérifier si votre système est conforme aux prérequis, utilisez cet outil.

Lors de l’examen vous serez amené(e) à vous connecter à différents clusters, serveurs, espaces de noms. Vous devez absolument faire attention où vous vous trouvez à chaque étape pour éviter de mettre en danger votre réussite sur un manque d’attention.

Prêt ?

J'espère que ces précisions et conseils vous permettront de passer cet examen en toute sérénité et d’obtenir cette certification ! Bon courage à vous !

Vous souhaitez monter en compétence sur Kubernetes ? WeScale Training vous propose des formations adaptées à votre besoin : https://training.wescale.fr/formations

Le passage avec succès de la CKA vous rend éligible au passage de la CKS (Certified Kubernetes Security Specialist) et je vous invite à essayer de la passer si le domaine de la cybersécurité vous intéresse. J’ai d'ailleurs rédigé un article similaire à celui-ci sur le sujet.

Liens utiles