Pour sauvegarder et restaurer des charges de travail sur Tanzu Kubernetes, créez une banque de données et installez Velero avec Restic sur le cluster Kubernetes.
Présentation
Les clusters Tanzu Kubernetes s'exécutent sur des nœuds de machine virtuelle. Pour sauvegarder et restaurer des clusters Tanzu Kubernetes, installez Velero et Restic sur le cluster.
Conditions requises
Assurez-vous que votre environnement répond aux conditions préalables suivantes pour installer Velero et Restic afin de sauvegarder et restaurer des charges de travail s'exécutant sur des clusters
Tanzu Kubernetes.
- Machine virtuelle Linux disposant d'un stockage suffisant pour stocker plusieurs sauvegardes de charge de travail. Vous allez installer MinIO sur cette machine virtuelle.
- Machine virtuelle Linux sur laquelle les Outils de l'interface de ligne de commande Kubernetes pour vSphere sont installés, y compris le Plug-in vSphere pour kubectl et kubectl. Vous allez installer Velero CLI sur cette machine virtuelle cliente. Si vous ne disposez pas d'une telle machine virtuelle, vous pouvez installer Velero CLI localement, mais vous devez ajuster les étapes d'installation en conséquence.
- L'environnement Kubernetes dispose d'un accès à Internet et est accessible par la machine virtuelle cliente.
Installer et configurer le magasin d'objets MinIO
Velero requiert un magasin d'objets compatible avec S3 comme destination pour les sauvegardes de charges de travail Kubernetes. Velero prend en charge plusieurs
fournisseurs de magasins d'objets de ce type. Pour plus de simplicité, ces instructions utilisent
MinIO, un service de stockage compatible avec S3 qui s'exécute localement sur la machine virtuelle du magasin d'objets.
- Installez MinIO.
wget https://dl.min.io/server/minio/release/linux-amd64/minio
- Accordez des autorisations d'exécution à MinIO.
chmod +x minio
- Créez un répertoire sur le système de fichiers pour MinIO.
mkdir /DATA-MINIO
- Démarrez le serveur MinIO.
./minio server /DATA-MINIO
- Après le démarrage du serveur MinIO, vous disposez de détails importants concernant l'instance de banque de données, notamment l'URL du point de terminaison, AccessKey et SecretKey. Enregistrez l'URL du point de terminaison, AccessKey et SecretKey dans le tableau.
Métadonnées de la banque de données Valeur URL du point de terminaison AccessKey SecretKey - Accédez à la banque de données MinIO en ouvrant un navigateur et en accédant à l'URL du point de terminaison du serveur MinIO.
- Connectez-vous au serveur MinIO et fournissez AccessKey et SecretKey.
- Pour activer MinIO en tant que service, configurez MinIO pour le démarrage automatique en téléchargeant le script
minio.service
.curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
- Modifiez le script
minio.service
et ajoutez la valeur suivante pourExecStart
.ExecStart=/usr/local/bin/minio server /DATA-MINIO path
- Enregistrez le script révisé.
- Configurez le service MinIO en exécutant les commandes suivantes.
cp minio.service /etc/systemd/system cp minio /usr/local/bin/ systemctl daemon-reload systemctl start minio systemctl status minio systemctl enable minio
- Créez un compartiment MinIO pour la sauvegarde et la restauration en lançant le navigateur MinIO et en vous connectant à votre magasin d'objets.
- Cliquez sur l'icône Créer un compartiment.
- Entrez le nom du compartiment, par exemple :
my-cluster-backups
. - Vérifiez que le compartiment a été créé.
- Par défaut, un nouveau compartiment MinIO est en lecture seule. Pour la sauvegarde et la restauration autonomes de Velero, le compartiment MinIO doit être en lecture-écriture. Pour passer le compartiment en lecture-écriture, sélectionnez-le et cliquez sur le lien de points de suspension.
- Sélectionnez Modifier la stratégie.
- Définissez la stratégie sur Lecture et écriture.
- Cliquez sur Ajouter.
- Pour fermer la boîte de dialogue, cliquez sur X.
Installer Velero CLI
Installez Velero CLI sur la machine virtuelle cliente ou sur votre machine locale.
- Téléchargez la version prise en charge du fichier binaire Velero signé pour vSphere with Tanzu depuis la page des téléchargements de produits VMware.
Note : Vous devez utiliser le fichier binaire Velero signé par VMware pour bénéficier du support VMware.
- Ouvrez une ligne de commande et remplacez le répertoire par le téléchargement de Velero CLI.
- Décompressez le fichier de téléchargement. Par exemple :
gunzip velero-linux-vX.X.X_vmware.1.gz
- Recherchez le fichier binaire Velero.
ls -l
- Accordez des autorisations d'exécution à Velero CLI.
chmod +x velero-linux-vX.X.X_vmware.1
- Rendez Velero CLI disponible de manière globale en la déplaçant vers le chemin d'accès au système :
cp velero-linux-vX.X.X_vmware.1 /usr/local/bin/velero
- Vérifiez l’installation.
velero version
Installer Velero et Restic sur le cluster Tanzu Kubernetes
Le contexte de Velero CLI suit automatiquement le contexte kubectl. Avant d'exécuter les commandes de Velero CLI pour installer Velero et Restic sur le cluster cible, définissez le contexte kubectl.
- Récupérez le nom du compartiment MinIO. Par exemple,
my-cluster-backups
. - Obtenez AccessKey et SecretKey pour le compartiment MinIO.
- Définissez le contexte du cluster Kubernetes cible afin que Velero CLI sache sur quel cluster travailler.
kubectl config use-context tkgs-cluster-name
- Créez un fichier de secrets nommé
credentials-minio
. Mettez à jour le fichier avec les informations d'identification d'accès au serveur MinIO que vous avez collectées. Par exemple :aws_access_key_id = 0XXNO8JCCGV41QZBV0RQ aws_secret_access_key = clZ1bf8Ljkvkmq7fHucrKCkxV39BRbcycGeXQDfx
Note : Si vous recevez le message d'erreur « Erreur lors de l'obtention d'un magasin de sauvegarde » avec la description « NoCredentialProviders : pas de fournisseur valide dans la chaîne », ajoutez la ligne[default]
au début du fichier d'informations d'identification. Par exemple :[default] aws_access_key_id = 0XXNO8JCCGV41QZBV0RQ aws_secret_access_key = clZ1bf8Ljkvkmq7fHucrKCkxV39BRbcycGeXQDfx
- Enregistrez le fichier et vérifiez qu’il est en place.
ls
- Exécutez la commande suivante pour installer Velero et Restic sur le cluster Kubernetes cible. Remplacez les deux URL par l'URL de votre instance de MinIO.
velero install \ --provider aws \ --plugins velero/velero-plugin-for-aws:v1.0.0 \ --bucket tkgs-velero \ --secret-file ./credentials-minio \ --use-volume-snapshots=false \ --use-restic \ --backup-location-config \ region=minio,s3ForcePathStyle="true",s3Url=http://10.199.17.63:9000,publicUrl=http://10.199.17.63:9000
- Vérifiez l'installation de Velero et de Restic.
kubectl logs deployment/velero -n velero
- Vérifiez l'espace de noms
velero
.kubectl get ns
- Vérifiez les espaces
velero
etrestic
.kubectl get all -n velero
Dépannage du DaemonSet Restic (si nécessaire)
Pour exécuter le DaemonSet Restic à trois espaces sur un cluster Kubernetes, vous devrez peut-être mettre à jour la spécification DaemonSet Restic et modifier le chemin d'accès hostPath. Pour plus d'informations sur ce problème, reportez-vous à la section
Integration de Restic dans la documentation de Velero.
- Vérifiez le DaemonSet Restic à trois espaces.
kubectl get pod -n velero
Si l'état des espaces est CrashLoopBackOff, modifiez-les comme suit.
- Exécutez la commande
edit
.kubectl edit daemonset restic -n velero
- Remplacez le chemin d'accès hostPath
/var/lib/kubelet/pods
par/var/vcap/data/kubelet/pods
.- hostPath: path: /var/vcap/data/kubelet/pods
- Enregistrez le fichier.
- Vérifiez le DaemonSet Restic à trois espaces.
kubectl get pod -n velero
NAME READY STATUS RESTARTS AGE restic-5jln8 1/1 Running 0 73s restic-bpvtq 1/1 Running 0 73s restic-vg8j7 1/1 Running 0 73s velero-72c84322d9-le7bd 1/1 Running 0 10m
Ajuster les limites de mémoire de Velero (si nécessaire)
Si votre sauvegarde Velero renvoie
status=InProgress
pendant de nombreuses heures, augmentez les limites et les paramètres de demande de mémoire.
- Exécutez la commande suivante.
kubectl edit deployment/velero -n velero
- Modifiez les limites et les paramètres de demande de mémoire en passant des valeurs par défaut de
256Mi
et128Mi
à512Mi
et256Mi
.ports: - containerPort: 8085 name: metrics protocol: TCP resources: limits: cpu: "1" memory: 512Mi requests: cpu: 500m memory: 256Mi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File