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