Para realizar copias de seguridad y restauración de cargas de trabajo en clústeres de TKG en Supervisor, cree un almacén de datos e instale Velero con Restic en el clúster de Kubernetes.
Descripción general
Los clústeres de TKG se ejecutan en nodos de la máquina virtual. Para realizar una copia de seguridad y restaurar cargas de trabajo de clústeres de TKG, instale Velero y Restic en el clúster.
Requisitos previos
Asegúrese de que el entorno cumpla con los siguientes requisitos previos para instalar Velero y Restic a fin de realizar copias de seguridad y restauración de cargas de trabajo que se ejecutan en clústeres de
Tanzu Kubernetes.
- Una máquina virtual Linux con suficiente almacenamiento para almacenar varias copias de seguridad de cargas de trabajo. Debe instalar MinIO en esta máquina virtual.
- Una máquina virtual Linux en la que están instaladas Herramientas de la CLI de Kubernetes para vSphere, lo que incluye complemento de vSphere para kubectl y kubectl. Debe instalar la CLI de Velero en esta máquina virtual cliente. Si no tiene una máquina virtual de este tipo, puede instalar la CLI de Velero de forma local, pero debe ajustar los pasos de instalación según corresponda.
- El entorno de Kubernetes tiene acceso a Internet y la máquina virtual cliente puede acceder a él.
Instalar y configurar el almacén de objetos minIO
Velero requiere un almacén de objetos compatible con S3 como el destino de las copias de seguridad de la cargas de trabajo de Kubernetes. Velero admite varios
proveedores de almacenes de objetos de este tipo. Por simplicidad, estas instrucciones utilizan
MinIO, un servicio de almacenamiento compatible con S3 que se ejecuta localmente en la máquina virtual del almacén de objetos.
- Instale MinIO.
wget https://dl.min.io/server/minio/release/linux-amd64/minio
- Otorgue permisos de ejecución a MinIO.
chmod +x minio
- Cree un directorio en el sistema de archivos para MinIO.
mkdir /DATA-MINIO
- Inicie el servidor MinIO.
./minio server /DATA-MINIO
- Una vez iniciado el servidor MinIO, se le proporcionarán detalles importantes de la instancia del almacén de datos, incluidos la URL del endpoint, AccessKey y SecretKey. Registre la URL de endpoint, AccessKey y SecretKey en la tabla.
Metadatos del almacén de datos Valor URL de endpoint AccessKey SecretKey - Abra un navegador a la URL del endpoint del servidor MinIO y desplácese hasta el almacén de datos de MinIO.
- Inicie sesión en el servidor MinIO y proporcione AccessKey y SecretKey.
- Para habilitar MinIO como servicio, descargue el script
minio.service
para configurar MinIO para inicio automático.curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
- Edite el script
minio.service
y agregue el siguiente valor paraExecStart
.ExecStart=/usr/local/bin/minio server /DATA-MINIO path
- Guarde el script revisado.
- Configure el servicio MinIO mediante la ejecución de los siguientes comandos.
cp minio.service /etc/systemd/system cp minio /usr/local/bin/ systemctl daemon-reload systemctl start minio systemctl status minio systemctl enable minio
- Cree un depósito MinIO para realizar una copia de seguridad y restauración; para ello, inicie el explorador MinIO e inicie sesión en el almacén de objetos.
- Haga clic en el icono Crear depósito.
- Introduzca el nombre del depósito, por ejemplo:
my-cluster-backups
. - Compruebe que se haya creado el depósito.
- De forma predeterminada, un nuevo depósito MinIO es de solo lectura. Para una copia de seguridad y restauración independientes de Velero, el depósito MinIO debe ser de lectura y escritura. Para establecer el depósito en lectura y escritura, selecciónelo y haga clic en el vínculo de puntos suspensivos (puntos).
- Seleccione Editar directiva.
- Cambie la directiva a Lectura y escritura.
- Haga clic en Agregar.
- Para cerrar el cuadro de diálogo, haga clic en la X.
Instalar la CLI de Velero
Instale la CLI de Velero en el cliente de máquina virtual o en la máquina local.
La versión que se utilizó para esta documentación es
Velero 1.9.7 para Tanzu Kubernetes Grid 2.2.0.
- Descargue Velero desde la página de descarga del producto Tanzu Kubernetes Grid en el portal de VMware Customer Connect.
Nota: Debe utilizar el archivo binario de Velero firmado por VMware para poder recibir soporte de VMware.
- Abra una línea de comandos y cambie el directorio a la descarga de la CLI de Velero.
- Descomprima el archivo de descarga. Por ejemplo:
gunzip velero-linux-vX.X.X_vmware.1.gz
- Compruebe el archivo binario de Velero.
ls -l
- Otorgue permisos de ejecución a la CLI de Velero.
chmod +x velero-linux-vX.X.X_vmware.1
- Haga que la CLI de Velero esté disponible globalmente, para ello, muévala a la ruta del sistema:
cp velero-linux-vX.X.X_vmware.1 /usr/local/bin/velero
- Compruebe la instalación.
velero version
Instalar Velero y Restic en el clúster de Tanzu Kubernetes
El contexto de la CLI de Velero seguirá automáticamente el contexto de kubectl. Antes de ejecutar los comandos de la CLI de Velero para instalar Velero y Restic en el clúster de destino, establezca el contexto de kubectl.
- Recupere el nombre del depósito MinIO. Por ejemplo,
my-cluster-backups
. - Obtenga AccessKey y SecretKey para el depósito MinIO.
- Establezca el contexto del clúster de Kubernetes de destino para que la CLI de Velero sepa en qué clúster trabajar.
kubectl config use-context tkgs-cluster-name
- Cree un archivo de secretos denominado
credentials-minio
. Actualice el archivo con las credenciales de acceso al servidor MinIO que recopiló. Por ejemplo:aws_access_key_id = 0XXNO8JCCGV41QZBV0RQ aws_secret_access_key = clZ1bf8Ljkvkmq7fHucrKCkxV39BRbcycGeXQDfx
Nota: Si recibe el mensaje de error "Error al obtener un almacén de copias de seguridad" con la descripción "NoCredentialProviders: no hay proveedores válidos en la cadena", anteponga la línea[default]
al principio del archivo de credenciales. Por ejemplo:[default] aws_access_key_id = 0XXNO8JCCGV41QZBV0RQ aws_secret_access_key = clZ1bf8Ljkvkmq7fHucrKCkxV39BRbcycGeXQDfx
- Guarde el archivo y compruebe que esté en su lugar.
ls
- Ejecute el siguiente comando para instalar Velero y Restic en el clúster de Kubernetes de destino. Reemplace ambas URL por la URL de la instancia 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
- Compruebe la instalación de Velero y Restic.
kubectl logs deployment/velero -n velero
- Compruebe el espacio de nombres
velero
.kubectl get ns
- Compruebe los pods
velero
yrestic
.kubectl get all -n velero
Solucionar problemas de DaemonSet de Restic (si es necesario)
Para ejecutar el DaemonSet de Restic de tres pods en un clúster de Kubernetes, es posible que deba actualizar la especificación de DaemonSet de Restic y modificar el hostPath. Para obtener más información sobre este problema, consulte
Integración de Restic en la documentación de Velero.
- Compruebe el DaemonSet de Restic de tres pods.
kubectl get pod -n velero
Si los pods tienen el estado CrashLoopBackOff, edítelos de la siguiente manera.
- Ejecute el comando
edit
.kubectl edit daemonset restic -n velero
- Cambie hostPath de
/var/lib/kubelet/pods
a/var/vcap/data/kubelet/pods
.- hostPath: path: /var/vcap/data/kubelet/pods
- Guarde el archivo.
- Compruebe el DaemonSet de Restic de tres pods.
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
Ajustar los límites de memoria de Velero (si es necesario)
Si la copia de seguridad de Velero devuelve
status=InProgress
durante muchas horas, aumente la configuración de memoria para límites y solicitudes.
- Ejecute el siguiente comando.
kubectl edit deployment/velero -n velero
- Cambie la configuración de memoria para límites y solicitudes desde el valor predeterminado de
256Mi
y128Mi
a512Mi
y256Mi
.ports: - containerPort: 8085 name: metrics protocol: TCP resources: limits: cpu: "1" memory: 512Mi requests: cpu: 500m memory: 256Mi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File