Si utiliza Kubernetes, es posible que se encuentre con la necesidad de mover archivos hacia y desde contenedores que se ejecutan en pods. Antes de los días de la contenedorización, utilizaríamos una herramienta como SCP (protocolo de copia segura) para mover archivos hacia y desde máquinas remotas. Afortunadamente, Kubernetes proporciona una herramienta similar.

En esta guía, aprenderá a utilizar kubectl cp para mover archivos hacia y desde pods Kubernetes.

1 - Uso básico

De los documentos, aquí está el uso básico:

 kubectl cp 

En kubectl cp recibe dos parámetros: el primero es el origen y el segundo el destino. Como en el caso de scp cualquiera de los parámetros (archivos de origen o destino) puede referirse a un archivo local o remoto.

Antes de empezar

Tenemos que asegurarnos de que nuestro cliente kubernetes está autenticado con un clúster. Hay muchas maneras de autenticar, pero la autenticación está fuera del alcance de esta guía.

En segundo lugar, tendremos que identificar el nombre de un pod (o pods) con el que queremos trabajar. Tendremos que utilizar kubectl get pod para encontrar el nombre del pod(s), y utilizaremos estos nombres en las siguientes secciones.

Copiar archivo de la máquina local al pod

Supongamos que queremos mover un archivo de nuestra máquina local a un pod.

 kubectl cp /ruta/a/archivo mi-pod:/ruta/a/archivo 

En el ejemplo anterior, hemos copiado un archivo local /ruta/a/archivo a una vaina llamada, mi-pod Hemos especificado una ruta idéntica en el pod para copiar el archivo. Observe que hemos utilizado una ruta absoluta en ambos casos. También podemos utilizar rutas relativas:

 kubectl cp mi-archivo mi-pod:mi-archivo 

En este ejemplo, hemos especificado una ruta relativa a un archivo local, y una ruta relativa en el pod. Una diferencia clave entre kubectl cp y una herramienta como scp es que con kubernetes, el archivo se copia en relación con el directorio de trabajo, no el directorio raíz.

Copiar archivo de un pod a otro pod

Del mismo modo, podemos copiar un archivo de un pod a otro. Se aplican las mismas reglas para rutas absolutas y relativas.

 kubectl cp pod-1:mi-archivo pod-2:mi-archivo 

Copie el archivo del pod a su máquina local

Como habrás adivinado, sólo tienes que intercambiar los parámetros del primer ejemplo.

 kubectl cp mi-pod:mi-archivo mi-archivo 

Esto copiará mi-archivo del directorio de trabajo de su pod a su directorio actual.

Copiar directorios

Al utilizar scp para copiar directorios, estamos acostumbrados a añadir el botón -r (Con kubectl cp Para copiar directorios se utiliza exactamente la misma sintaxis que para copiar archivos.

 kubectl cp mi-dir mi-pod:mi-dir 

Especificación de un contenedor

En algunos casos, puede que esté ejecutando varios contenedores en un pod. En ese caso, tendrá que especificar el contenedor. Puede hacerlo con -c que es coherente con la mayoría de los comandos de kubectl.

 kubectl cp mi-archivo mi-pod:mi-archivo -c mi-nombre-contenedor