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