Introducción
Este documento describe el análisis y la resolución de fallas de instalación de contenedores causadas por incompatibilidades de empaquetado de OCI con Cisco Catalyst
Prerequisites
Requirements
Cisco recomienda que tenga conocimiento sobre estos temas:
- Alojamiento de aplicaciones en switches Catalyst de Cisco serie 9000
- Formatos de imagen del contenedor Docker, en concreto los estándares Docker y Open Container Initiative (OCI)
- Diferencias en las versiones de Docker Engine y su compatibilidad con las versiones de Cisco IOS®
- Familiaridad básica con la CLI de Cisco IOS® y solución de problemas de instalaciones de contenedores
Componentes Utilizados
La información que contiene este documento se basa en las siguientes versiones de software y hardware.
- Switches Catalyst de Cisco serie 9300X
- Software Cisco IOS®
- Aplicación de terceros empaquetada como contenedor con formato OCI
- Unidad de estado sólido (SDD) como almacenamiento para contenedores de alojamiento de aplicaciones
La información que contiene este documento se creó a partir de los dispositivos en un ambiente de laboratorio específico. Todos los dispositivos que se utilizan en este documento se pusieron en funcionamiento con una configuración verificada (predeterminada). Si tiene una red en vivo, asegúrese de entender el posible impacto de cualquier comando.
Antecedentes
El alojamiento de aplicaciones en switches Catalyst de Cisco serie 9000 permite la implementación de aplicaciones basadas en contenedores directamente en el hardware del switch, aprovechando la plataforma IOx. Estos contenedores suelen utilizar el formato de imagen Docker. Los recientes avances en los estándares de empaquetado de contenedores han introducido el formato Open Container Initiative (OCI), que no es compatible de forma universal con todas las versiones de Docker Engine. Con el lanzamiento de las nuevas versiones de Cisco IOS®, Cisco ha añadido gradualmente soporte para las versiones más recientes de Docker Engine, ampliando así la compatibilidad con los contenedores empaquetados de OCI. Sin embargo, no todas las versiones de Cisco IOS®, ni todas las plataformas Catalyst, proporcionan soporte para el empaquetado de OCI. A medida que las organizaciones buscan implementar aplicaciones de terceros que aprovechen los estándares más recientes, las discrepancias entre las versiones de software y los formatos de contenedor pueden provocar errores de instalación y los errores relacionados.
Problema
El objetivo era actualizar o instalar una aplicación de terceros como contenedor en switches Catalyst de Cisco serie 9000, específicamente en dispositivos que ejecutan Cisco IOS® 17.6.4. La aplicación se empaquetó como una imagen Docker compatible con OCI y se almacenó en la unidad SSD. Durante la instalación, el proceso falló con errores relacionados con la estructura del archivo de almacenamiento y faltan blobs obligatorios. Esta es una reproducción detallada e ilustración del problema.
Paso 1: Intente instalar el contenedor en Cisco IOS® 17.6.4
Device#Aug 15 13:11:11.389 UTC: %IM-6-INSTALL_MSG: R0/0: ioxman: app-hosting: Install failed: Invalid Archive file: Unable to extract docker rootfs /disk0/pathview-cmp.tar to /vol/disk0/caf/tmpExtractf117jdv6/rootfs Error:Mandatory layer blobs is missing!
Este mensaje de error indica una falla durante la extracción de los archivos Docker del archivo .tar proporcionado, haciendo referencia específicamente a los blobs de capa obligatorios que faltan. Esto es sintomático de una incompatibilidad entre el formato de imagen del contenedor y la versión de Docker Engine disponible en el switch.
Paso 2: inspeccionar la estructura del archivo .tar
Device#archive tar /table flash:pathview-cmp.tar
blobs/ (directory)
blobs/sha256/ (directory)
blobs/sha256/0318da79d21ba1e610bde0c6029f424293316cb913bb8e39a673c1f344be8727 (477 bytes)
blobs/sha256/046b3f7b867b1b7b8abd8ad22b3d64d1692f670c6a6e210a03ad3d31e9e80e79 (2996736 bytes)
blobs/sha256/04f0912220f0c2c6935e817813866ba3bdadba386edc577325a83a1fdb4879d2 (2560 bytes)
blobs/sha256/1e5cb17607b5c739629c9d0be80fa48f57ccd3507962ac221c9fbb91b20af171 (3584 bytes)
blobs/sha256/26323df902297791c86ab980a2cfaa76a9939bc7cc72646d6d0fb02db2fd0c32 (477 bytes)
blobs/sha256/2e4b80ea022a9c575ff90f41c4a533a0104a0361be4f563d50ec128aea973f57 (3072 bytes)
blobs/sha256/31aedc7091e9c30e45a6b276bd3bbe922ded9791ef4a9b9c9e44d3c9ddd74183 (477 bytes)
blobs/sha256/4172f6ce43d7636f98bfca81b0dc64ab7a600bbc7c60916c70a89749d092bd28 (11776 bytes)
blobs/sha256/4654182bbf590a33df0930847ce2803792ad2822e19c630f00bb39abb0c98ef6 (11676 bytes)
blobs/sha256/4ba2623fac214b72c911695418ed7d4d3b41dc1ed9101e448ca124ed126f0cf5 (401 bytes)
blobs/sha256/625d905965265a01abf82f80bd0c9c103ab229efbffdf8e17e5408a97d9ba470 (477 bytes)
blobs/sha256/6ba030bdcefc282c164bc0c6b4dfa8f30f085487aba82c1524a55649f2741e98 (1908 bytes)
blobs/sha256/6c4c763d22d0c5f9b2c5901dfa667fbbc4713cee6869336b8fd5022185071f1c (77895680 bytes)
blobs/sha256/6def6f10cc5b9a7dc012ca9e9321013a1d947c60f7ef902af2bcdef2fc53efcb (207397376 bytes)
blobs/sha256/7a2f3e2b33a720bc5ba562639d581574c997fa47efb26486360e0cad9d311573 (4096 bytes)
blobs/sha256/96cbe396af0cb40feb2bdab0d22e2a5f5ca3865455d7c8ca28245e1462eaf2be (477 bytes)
blobs/sha256/a0b1b29152e438cee663922cf019cc9beccd1958e3385cbb0b1c4b2c8f5cf0f8 (2048 bytes)
blobs/sha256/a9775757eec8bb747ca1dd66356a643943d4c9e18cccb7135305f9f3ff3c6790 (3584 bytes)
blobs/sha256/b5a729e23ce10966aa1935040de68b24dedc7b7cbc98dd233307623f95330493 (1971200 bytes)
blobs/sha256/c21b565f0164ee4f392a2f3507b36a5f7d06c77db979e84e9fd6100f3c5f1ef5 (2220 bytes)
blobs/sha256/c5b39eb2dc5af9a446af02dd67237191f5fc164dce4bfeb2cbc63ab7802fc50f (29141504 bytes)
blobs/sha256/d0539e4616d88232f284a9d469ee309dec1850aa8b6ed4f57b2e84f413eba34d (477 bytes)
blobs/sha256/d13aa916c45e4866e0bc3af1a68ee7360b5e1c074cd0849f67b72b64e5e4d4f5 (477 bytes)
blobs/sha256/d4924836d34beac0bc207c42351234b771a3f2a0d3a0bc1e8b1aa175edb70852 (477 bytes)
blobs/sha256/d86d4fab4a9109fea084cccddefb3bb78b69d20674a1104d8ca3170ed4ad50d7 (477 bytes)
blobs/sha256/dd1f33c08d67af57858bcc4aa1cedd4cfa00560b77b248e0903ae26bb66bea87 (477 bytes)
blobs/sha256/efdcd58e09999ffc1bca3ca8256a03fdf8fa90713478d2ed13f884ddd2e3cad2 (12800 bytes)
blobs/sha256/f356261d8da7bf5ad814f757b1a51b9be2eb74c59cfcda944be2d31ab56f5ecd (477 bytes)
index.json (381 bytes)
manifest.json (4135 bytes)
oci-layout (31 bytes) <<< Indication that the container is created using OCI standard
repositories (101 bytes)
device#
A pesar de la extracción, la instalación falló, lo que confirma que el problema no era la integridad del archivo, sino la compatibilidad de formatos. Se identificó que el archivo .tar del contenedor utilizaba la estructura OCI, que no es compatible con la versión Docker daemon(dockerd) presente en Cisco IOS® 17.6.4.
Paso 3: Comprobación de la versión de IOSx y Dockerd en el switch
Device#show iox
IOx Infrastructure Summary:
---------------------------
IOx service (CAF) : Running
IOx service (HA) : Running
IOx service (IOxman) : Running
IOx service (Sec storage) : Not Running
Libvirtd 5.5.0 : Running
Dockerd 18.03.0 : Running <<< This version doesn't support OCI packaging
Sync Status : Disabled
Este resultado muestra que el switch está ejecutando la versión 18.03.0 de Dockerd, que no admite contenedores empaquetados por OCI. Ésta es la raíz del error de instalación de las imágenes con formato OCI.
Solución
La solución consiste en actualizar el software Cisco IOS® a una versión que admita Docker Engine (Docker Engine) lo suficientemente reciente como para permitir la instalación de contenedores con formato OCI. El proceso se describe paso a paso.
Paso 1: Actualice el switch a una versión compatible de Cisco IOS®
Actualice el switch a Cisco IOS® versión 17.8.1 o superior. Esta versión incluye Dockerd v19.03.13-ce o posterior, que admite el empaquetado de OCI.
Paso 2: Verificar la versión acoplada después de la actualización
Device#show iox
IOx Infrastructure Summary:
---------------------------
IOx service (CAF) : Running
IOx service (HA) : Running
IOx service (IOxman) : Running
IOx service (Sec storage) : Running
Libvirtd 5.5.0 : Running
Dockerd v19.03.13-ce : Running <<< Version that supports OCI packaging
Sync Status : Disabled
Asegúrese de que Dockerd se esté ejecutando en v19.03.13-ce o superior. Si es así, los contenedores con formato OCI se pueden instalar ahora correctamente.
Paso 3: Vuelva a intentar la instalación del contenedor
Después de confirmar la versión de Docker Engine, repita el proceso de instalación del contenedor. La instalación se completa ahora correctamente sin errores relacionados con la extracción del archivo o con la ausencia de blobs.
Causa
La causa subyacente del problema fue el uso de una imagen de contenedor empaquetada en el formato Open Container Initiative (OCI), que no es compatible con la versión de Docker Engine (docker 18.03.0) incluida con Cisco IOS® 17.6.4. Solo las versiones 17.8.1 y superiores de Cisco IOS®, que incluyen Docker Engine v19.03.13-ce o posterior, admiten el empaquetado de OCI. La incompatibilidad se resuelve al actualizar el software Cisco IOS®.
Información Relacionada