Repondre à l'ensemble des questions du TP. Ce TP servira de cours, c'est à vous d'aller chercher les notions. Pour comprendre les thématiques abordés. Rendre le compte rendu qui vous servira de (cours / fiche de révision) du TP avant dimanche 28 Mars 23h59.
Vous pouvez créer un branche via master exemple : feature/
Avant de commencer il faut installer : minikube et kubectl (https://kubernetes.io/docs/tasks/tools/install-kubectl/)
https://www.youtube.com/watch?v=NChhdOZV4sY (fr) ou https://www.youtube.com/watch?v=aSrqRSk43lY (en)
Qu'est ce qu'on pod ?
Qu'est ce qu'un node ?
A quoi sert K8S ?
Le développeur s'occupe t'il toujours de l'infrastructure?
Qu'est ce qu'un KUBELET?
Qu'est ce qu'un "Service" dans K8S?
Qu'est ce que EKS? et SWARM?
Qu'est ce que Minikube?
Lancer minikube start
Lancer le dashboard de kubernetes : minikube dashboard
Explorer un peu le dashboard pour comprendre l'arborescence.
Qu'est ce qu'un déploiement Kubernetes ?
kubectl get deployments
Qu'avez vous ?
On lance maintenant un déploiement en utilisant l'image docker que nous avions build. (que j'ai déposé sur le dockerhub)
kubectl create deployment my-app-js --image=tsaussac/node-app
Relancer kubectl get deployments
, le deploiement est lancé ?
Aller voir ce qui se passe dans le dashboard.
Pour voir l'ensemble des pods qui tournent : kubectl get pods
Le pod est t'il "RUNNING" ? S'il ne l'est pas => me le dire.
Pour info : pour détruire un pod utiliser kubectl delete -n default pod <PODS-ID>
Voir la config de kubectl : kubectl config view
Voir les events : kubectl get events
kubectl cluster-info
que donne cette commande?
##4. Service K8S
Nous allons créer un service à ce deployment. pour cela on utilise expose deployment
dans notre cas :
kubectl expose deployment my-app-js --type=LoadBalancer --port=8080
Sur Minikube, le type LoadBalancer rend le Service accessible via la commande minikube service
Aller voir si vous trouvez le service dans le dashboard et dans le terminal : kubectl get services
minikube service my-app-js
Que se passe'il ? Quel est le message affiché?
##5. Les extensions
egarder un peu les extensions.
minikube addons list
Dans la vie pro vous utiliserez surement : istio, logviewer, metrics-server
Pour ajouter un addon minikube addons enable metrics-server
pour l'afficher :
kubectl get pod,svc -n kube-system
Lancer 5 exemplaire du pod précédent
kubectl scale -n default deployment my-app-js --replicas=5
kubectl get pods
Allez voir le dashboard pour comprendre et me dire si c'est cohérent avec le get pods ?
kubectl get deployment my-app-js -o yaml > my-app-js.yml
Vous pourrez ainsi directement importer la conf via : kubectl create -f <file>
##8. Acceder à un pod et modifier le message.
kubectl create deployment mynginxapp --image=nginx:latest
kubectlexpose deployment mynginxapp --type=NodePort --port=80
minikube service mynginxapp --url
Que voyez vous? Essayez de comprendre les 3 commandes.
Acceder à un pod (nginx) et modifier le fichier index.html.
Récupérer le nom du pods nginx(kubectl get pods
)
Se connecter à un pod : kubectl exec -ti mynginxapp-5d9b94449d-lw4jw bash
cd /usr/share/nginx/html/
ls
rm index.html
echo "Vu que je suis rigoureux j'enverrai mon TP en temps et en heure..." > index.html
exit
minikube service mynginxapp --url
Vous pouvez maintenant nettoyer les ressources que vous avez créées dans votre cluster :
kubectl delete service my-app-js
kubectl delete deployment my-app-js
Si nécessaire, arrêtez la machine virtuelle Minikube (VM) :
minikube stop
Si nécessaire, effacez la VM Minikube :
minikube delete
Qu'avez vous pensez du TP ?
Comprennez vous mieux K8S ?
Avez vous des précos ?