Skip to content

Lab9 Job & CronJob Solution

Job

Créer un job nommé init permettant de créer un répertoire de sauvegarde dont le nom est passé par Variable d’Environnement

Créer un ConfigMap pour la variable d’environnement

Terminal window
vi cm-dir.yml
apiVersion: v1
kind: ConfigMap
metadata:
name: backup-dir
data:
dir: sauvegarde
Terminal window
kubectl apply -f cm-dir.yml

Créer un Job pour Créer le répertoire de sauvegarde

Terminal window
vi job-init.yml
apiVersion: batch/v1
kind: Job
metadata:
name: init
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: init
image: alpine:3.12
command: ["/bin/sh"]
args: ["-c","mkdir /mnt/$BACKUP_DIR"]
env:
- name: BACKUP_DIR
valueFrom:
configMapKeyRef:
name: backup-dir
key: dir
volumeMounts:
- name: data
mountPath: /mnt
volumes:
- name: data
persistentVolumeClaim:
claimName: nfs-pvc

Vérifier que le répertoire a été créé

Terminal window
ls -l /home/shares/userX

CronJob

Créer un CronJob nommé backup qui permet de sauvegarder les logs (/var/log) du Node du cluster

Terminal window
vi cronjob.yml
apiVersion: batch/v1
kind: CronJob
metadata:
name: cron
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: backup
image: alpine:3.12
command: ["/bin/sh"]
args: ["-c","tar -cvf /mnt/$BACKUP_DIR/backup.tar.`date +%h%d-%H%M` /logs_master"]
env:
- name: BACKUP_DIR
valueFrom:
configMapKeyRef:
name: backup-dir
key: dir
volumeMounts:
- name: logs
mountPath: /logs_master
- name: data
mountPath: /mnt
restartPolicy: OnFailure
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: Exists
volumes:
- name: data
persistentVolumeClaim:
claimName: nfs-pvc
- name: logs
hostPath:
path: /var/log
type: Directory
Terminal window
kubectl apply -f cronjob.yml

Vérifier que la sauvegarde s’est bien effectuée

Terminal window
ls -l /home/shares/userX/sauvegarde