Skip to content

Exercices Kubernetes - TP4

Exercice 1

Créez un manifest contenant deux pods avec une image busybox.

Ajoutez la commande command: ["sh", "-c", "while true; do echo container2; sleep 3600; done"]

Créez un volume vide nommé storage, sur le container1-tp4-ex1 il est monté dans /vol/data et sur le container2-tp4-ex1 il est monté dans /store/data

Voir la correction
apiVersion: v1
kind: Pod
metadata:
  name: pod-tp4-ex1
spec:
  containers:
  - name: container1-tp4-ex1
    image: busybox
    command: ["sh", "-c", "while true; do echo container1; sleep 3600; done"]
    volumeMounts:
    - name: storage
      mountPath: /vol/data
  - name: container2-tp4-ex1
    image: busybox
    command: ["sh", "-c", "while true; do echo container2; sleep 3600; done"]
    volumeMounts:
    - name: storage
      mountPath: /store/data
  volumes:
  - name: storage
    emptyDir: {}

Exercice 2

Créer un pod qui utilise deux volume:

  • un pour crĂ©er un fichier (nommĂ© myfile)
  • un pour crĂ©er un dossier (nommĂ© mydir).

Le dossier sera créer dans /var/local/folder et le fichier dans /var/local/folder/1.txt.

Vérifiez la présence du fichier et du dossier.

Voir la correction
apiVersion: v1
kind: Pod
metadata:
  name: pod-tp4-ex2
spec:
  containers:
  - name: container-tp4-ex2
    image: busybox
    command: ["sh", "-c", "while true; do echo container2; sleep 3600; done"]
    volumeMounts:
    - mountPath: /var/local/folder
      name: mydir
    - mountPath: /var/local/folder/1.txt
      name: myfile
  volumes:
  - name: mydir
    hostPath:
      path: /var/local/folder
      type: DirectoryOrCreate
  - name: myfile
    hostPath:
      path: /var/local/folder/1.txt
      type: FileOrCreate
kubectl exec -it pod-tp4-ex2 -c container-tp4-ex2 -- sh

Exercice 3: Exercice Bonus

CrĂ©ez un PV de 1Go qui a pour path /mnt/data, il doit ĂȘtre montĂ© en lecture et Ă©criture par un seul noeud Ă  la fois.

CrĂ©er un PVC qui utilise un 1Go du PV, il doit ĂȘtre montĂ© en lecture et Ă©criture par un seul noeud Ă  la fois.

Créer un statefulset avec son service.

Le port exposé dans le service sera le port: 27017

Le conteneur doit utiliser l'image mongo:4.4, il aura 2 replicas. Le PVC sur le chemin /data/db et il doit utiliser tout le stockage défini au dessus.

iVoir la correction
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mongo-pv
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mongo-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  serviceName: "nginx"
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        volumeMounts:
        - name: storage
          mountPath: /usr/share/nginx/html
      volumes:
      - name: storage
        persistentVolumeClaim:
          claimName: mongo-pvc