Collection de commandes et tips pour s’en sortir dans kubernetes
Déploiment manuel
⛔️ Ne jamais, jamais, jamais déployer a la main ⛔️
Utiliser :
kubectl apply -f
Investigations & debug
Quelques commande pour s’en sortir, quand ca va vraiment pas.
kubectl logs <podid>
kubectl describe pod <podid>
kubectl describe deployer <deploymentid>
kubectl describe service <serviceid>
kubectl describe ingress <ingressid>
kubectl get events
kubectl top
kubectl top <pod_name>
logs
tail -f /var/log/messages
systemctl status kubelet
journalctl -xe
System
Alias system
Retourner toutes les ressources avec tous les namespaces
alias kall = 'kubectl get all --all-namespaces'
alias kw = 'kubectl -owide'
Activer l’autocompletion
yum install bash-autocompletion
// dans .bashrc <<
source <(kubectl completion bash)
Fichiers Yaml
Ne pas hésiter a regrouper plusieurs fichier Kube en un seul grace a ---
Récupérer le Yaml d’une ressource existante :
kubectl get pod <ressource> -oyaml
Afficher en json et récupérer des commandes spécifiques
kubectl get nodes --output=jsonpath='{.items[0].metadata.name}'
Utiliser request et limit
Détermine les ressources (CPU/ram) minimale toujours disponible (request) et limit limite les ressources dipo
pods sans request -> premier pod premier candidats supprimés Bonne pratique: en définir
Tips : garder des CPU REQUEST a 1, maximise les chances d’etre schédulé / scalé maximise les chances de trouver un pod avec ressources dispo
Limit ressource quota
applique des ressources quota sur un cluster. S’applique sur un namespaces
Utiliser propre healtchek
- readiness probes
- liveness probes
Utile dans le cas ou le container est pret mais pas l’appli (temps de demarrage de spring)
- InitialDelaySecond : pour décaller le demarrage des sondes et attendre que l’app soit up
kubectl exe -it -c apache bash
- var d’environnement / process / connectivité reseau / filesystem & passwords / volume
Utiliser portforward
Se connecter depuis la machine locale vers le pod a travers le kubectl kubectl port-forward 8080:88080
possible entre services kubectl port-forward svc/checkit 8080:808080
Ingress
Collection de règles permettant a une connexion externe d’atteindre des services a l’intérieur du cluster_
- terminaison SSL
- vhost
- path spliting (ex /admin -> spécialement sur un type de services)