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)