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 2.2 se ejecutan en nodos de 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.
  1. Instale MinIO.
    wget https://dl.min.io/server/minio/release/linux-amd64/minio
  2. Otorgue permisos de ejecución a MinIO.
    chmod +x minio
  3. Cree un directorio en el sistema de archivos para MinIO.
    mkdir /DATA-MINIO
  4. Inicie el servidor MinIO.
    ./minio server /DATA-MINIO
  5. 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
  6. Abra un navegador a la URL del endpoint del servidor MinIO y desplácese hasta el almacén de datos de MinIO.
  7. Inicie sesión en el servidor MinIO y proporcione AccessKey y SecretKey.
  8. 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
  9. Edite el script minio.service y agregue el siguiente valor para ExecStart.
    ExecStart=/usr/local/bin/minio server /DATA-MINIO path
  10. Guarde el script revisado.
  11. 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
  12. 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.
  13. Haga clic en el icono Crear depósito.
  14. Introduzca el nombre del depósito, por ejemplo: my-cluster-backups.
  15. Compruebe que se haya creado el depósito.
  16. 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).
  17. Seleccione Editar directiva.
  18. Cambie la directiva a Lectura y escritura.
  19. Haga clic en Agregar.
  20. 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.
  1. 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.
  2. Abra una línea de comandos y cambie el directorio a la descarga de la CLI de Velero.
  3. Descomprima el archivo de descarga. Por ejemplo:
    gunzip velero-linux-vX.X.X_vmware.1.gz
  4. Compruebe el archivo binario de Velero.
    ls -l
  5. Otorgue permisos de ejecución a la CLI de Velero.
    chmod +x velero-linux-vX.X.X_vmware.1 
  6. 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 
  7. 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.
  1. Recupere el nombre del depósito MinIO. Por ejemplo, my-cluster-backups.
  2. Obtenga AccessKey y SecretKey para el depósito MinIO.
  3. 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
  4. 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
  5. Guarde el archivo y compruebe que esté en su lugar.
    ls
  6. 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
  7. Compruebe la instalación de Velero y Restic.
    kubectl logs deployment/velero -n velero
  8. Compruebe el espacio de nombres velero.
    kubectl get ns
  9. Compruebe los pods velero y restic.
    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.
  1. 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.

  2. Ejecute el comando edit.
    kubectl edit daemonset restic -n velero
  3. Cambie hostPath de /var/lib/kubelet/pods a /var/vcap/data/kubelet/pods.
    - hostPath:
        path: /var/vcap/data/kubelet/pods
  4. Guarde el archivo.
  5. 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.
  1. Ejecute el siguiente comando.
    kubectl edit deployment/velero -n velero
  2. Cambie la configuración de memoria para límites y solicitudes desde el valor predeterminado de 256Mi y 128Mi a 512Mi y 256Mi.
        
    ports:
    - containerPort: 8085
      name: metrics
      protocol: TCP
    resources:
      limits:
        cpu: "1"
        memory: 512Mi
      requests:
        cpu: 500m
        memory: 256Mi
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File