Kubernetes Commands - Toolbox

Temps de lecture environ 2 min

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)
Mots clés : devops kubernetes
Auteur : Allemand Sébastien