Introduction
Ce document décrit l'analyse et la résolution des défaillances d'installation de conteneurs causées par les incompatibilités d'emballage d'OCI avec Cisco Catalyst
Conditions préalables
Exigences
Cisco vous recommande de prendre connaissance des rubriques suivantes :
- Hébergement d'applications sur les commutateurs Cisco Catalyst 9000
- Formats d'image du conteneur Docker, en particulier les normes Docker et OCI (Open Container Initiative)
- Différences entre les versions du moteur Docker Engine et leur compatibilité avec les versions de Cisco IOS®
- Connaissance de base de l'interface de ligne de commande Cisco IOS® et dépannage des installations de conteneurs
Composants utilisés
Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :
- Commutateurs de la gamme Cisco Catalyst 9300X
- Logiciel Cisco IOSMD
- Application tierce conditionnée en conteneur au format OCI
- Lecteur SSD (Solid-State Drive) comme stockage pour conteneurs d'hébergement d'applications
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Si votre réseau est en ligne, assurez-vous de bien comprendre l’incidence possible des commandes.
Informations générales
L'hébergement d'applications sur les commutateurs de la gamme Cisco Catalyst 9000 permet le déploiement d'applications basées sur des conteneurs directement sur le matériel du commutateur, en exploitant la plate-forme IOx. Ces conteneurs utilisent souvent le format d'image Docker. Des développements récents dans les normes d'emballage de conteneurs ont introduit le format OCI (Open Container Initiative), qui n'est pas universellement pris en charge dans toutes les versions de Docker Engine. Avec la sortie des nouvelles versions de Cisco IOS®, Cisco a progressivement ajouté la prise en charge des versions plus récentes de Docker Engine, étendant ainsi la compatibilité avec les conteneurs emballés OCI. Cependant, toutes les versions de Cisco IOS®, ni toutes les plates-formes Catalyst, ne prennent pas en charge l'encapsulation OCI. Alors que les entreprises cherchent à déployer des applications tierces qui tirent parti de normes plus récentes, les incohérences entre les versions logicielles et les formats de conteneur peuvent entraîner des échecs d'installation et des erreurs associées.
Problème
L'objectif était de mettre à niveau ou d'installer une application tierce en tant que conteneur sur des commutateurs de la gamme Cisco Catalyst 9000, en particulier sur des périphériques exécutant Cisco IOS® 17.6.4. L'application était conditionnée en tant qu'image Docker conforme à l'OCI et stockée sur le lecteur SSD. Au cours de l'installation, le processus a échoué avec des erreurs liées à la structure du fichier d'archive et des objets blob obligatoires manquants. Il s'agit d'une reproduction détaillée et d'une illustration de la question.
Étape 1 : Essayez d'installer le conteneur sur 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!
Ce message d'erreur indique un échec lors de l'extraction des fichiers Docker à partir du fichier tar fourni, faisant spécifiquement référence aux blocs de couche obligatoires manquants. Ceci est symptomatique d'une incompatibilité entre le format d'image du conteneur et la version du Docker Engine disponible sur le commutateur.
Étape 2 : inspecter la structure du fichier 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#
Malgré l'extraction, l'installation a échoué, confirmant que le problème n'était pas lié à l'intégrité du fichier mais à la compatibilité du format. Le fichier tar du conteneur a été identifié comme utilisant la structure OCI, qui n'est pas prise en charge par la version du démon Docker (dockerd) présente dans Cisco IOS® 17.6.4.
Étape 3 : Vérifier IOx et la version ancrée sur le commutateur
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
Ce résultat montre que le commutateur exécute Dockerd version 18.03.0, qui ne prend pas en charge les conteneurs encapsulés dans OCI. Il s'agit de la racine de l'échec d'installation pour les images au format OCI.
Solution
La solution implique la mise à niveau du logiciel Cisco IOS® vers une version prenant en charge un Docker Engine (dockerd) suffisamment récent pour permettre l'installation de conteneurs au format OCI. Le procédé est décrit étape par étape.
Étape 1 : Mise à niveau du commutateur vers une version compatible de Cisco IOS®
Mettez à niveau le commutateur vers Cisco IOS® version 17.8.1 ou ultérieure. Cette version inclut Dockerd v19.03.13-ce ou ultérieure, qui prend en charge l'encapsulation OCI.
Étape 2 : Vérification de la version ancrée après la mise à niveau
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
Assurez-vous que Dockerd fonctionne à v19.03.13-ce ou version ultérieure. Si c'est le cas, les conteneurs au format OCI peuvent maintenant être installés avec succès.
Étape 3 : Réessayer l'installation du conteneur
Après avoir confirmé la version du Docker Engine, répétez la procédure d'installation du conteneur. L'installation se termine maintenant sans erreurs liées à l'extraction d'archive ou aux objets blob manquants.
Motif
La cause sous-jacente du problème était l'utilisation d'une image de conteneur empaquetée au format Open Container Initiative (OCI), qui n'est pas prise en charge par la version de Docker Engine (ancrée 18.03.0) incluse avec Cisco IOS® 17.6.4. Seules les versions 17.8.1 et ultérieures de Cisco IOS®, qui incluent Docker Engine v19.03.13-ce ou version ultérieure, prennent en charge l'empaquetage OCI. La mise à niveau du logiciel Cisco IOS® résout l’incompatibilité.
Informations connexes