Kubernetes Cheat Sheet - pifou25/docker-jeedom GitHub Wiki

Kubernetes Syntax

kubectl get <resource>
kubectl describe <resource> <name>
kubectl explain <resource>
kubectl logs <name>

Générer le ficher YAML correspondant à un élément

kubectl create ns training --dry-run=client -o yaml > training.ns.yml
kubectl get service -n formation who-is-there-rs -o yaml

surveiller périodiquement

watch -n 0.5 kubectl get po

ROLLBACK sur un déploiement :

revient sur le ReplicaSet précédent - si existe encore

kubectl rollout undo deployment who-is-there

Créer et démarrer un POD

kubectl run -ti curl -n formation --image debian

Créer et démarrer la 'Stack' Deployment + ReplicaSet + Pod

kubectl create deployment registry --image registry:2
kubectl expose deployment registry --port 5000 --type NodePort

Augmenter l'échelle

kubectl scale replicaset who-is-there-rs --replicas 5

Description - comme Docker Inspect

kubectl describe endpoints who-is-there-rs -n formation

Entrer dans un pod / container :

kubectl exec -ti -n formation <name> -- /bin/sh

Re-entrer dans un pod existant

kubectl attach curl -c curl -it -n formation

Surveiller les logs

kubectl logs -f services/who-is-there-rs -n formation 
kubectl logs -f -n formation -l app=who-is-there-lb --max-log-requests 9 --all-containers --ignore-errors
kubectl logs website -c git-clone

Registry Docker local

kubectl create deployment registry --image registry:2
kubectl expose -f app.deploy.yml --port 80 --target-port 8080 --type NodePort

Le tester avec curl: curl 127.0.0.1:31233/v2/_catalog

DOCKER : build image + créer tag + push dans le repo local:

docker build -t web:formation .
docker tag web:formation 127.0.0.1:31233/web:formation
docker push 127.0.0.1:31233/web:formation

K9S utilitaire de monitoring Kubernetes en CLI

https://github.com/derailed/k9s
curl -L https://github.com/derailed/k9s/releases/download/v0.26.7/k9s_Linux_x86_64.tar.gz -o k9s.tgz
tar xzvf k9s.tgz

Fichiers sources de formation

https://gitlab.com/ctritten/kubernetes-tp-files

créer un fichier texte avec les mots de passe (format clé=valeur) dans secret

MARIADB_ROOT_PASSWORD=admin
MARIADB_DATABASE=my-app
MARIADB_USER=my-user
MARIADB_PASSWORD=my-passwd

kubectl create secret generic mon-precieux --from-env-file secrets/secret -n formation

Création du POD mariadb:

---
apiVersion: v1
kind: Pod
metadata:
  name: maria-pod
  namespace: formation
  labels:
    app: mariadb
    version: v1
spec:
  containers:
  - name: mariadb-co
    image: mariadb:10.7.1
    envFrom:
    - secretRef:
        name: mon-precieux
  restartPolicy: Always

### Création du déploiement pour l'appli web

apiVersion: apps/v1 kind: Deployment metadata: name: webapp-dp namespace: formation spec: replicas: 3 strategy: type: RollingUpdate rollingUpdate: maxUnavailable: 1 maxSurge: 1 selector: matchLabels: app: webapp template: metadata: labels: app: webapp version: v1 spec: containers: - name: webapp-ct image: 127.0.0.1:31233/web:formation env: - name: DB_HOST value: maria-sc - name: DB_DATABASE valueFrom: secretKeyRef: name: mon-precieux key: MARIADB_DATABASE - name: DB_USER valueFrom: secretKeyRef: name: mon-precieux key: MARIADB_USER - name: DB_PASSWORD valueFrom: secretKeyRef: name: mon-precieux key: MARIADB_PASSWORD


Fait en mode impératif (ligne de commande) : déclarer 2 services, 1 pour chaque POD. Puis éventuellement un Ingress.
⚠️ **GitHub.com Fallback** ⚠️