Introduzione
Questo documento descrive l'analisi e la risoluzione dei problemi di installazione dei contenitori causati da incompatibilità dei pacchetti OCI con Cisco Catalyst
Prerequisiti
Requisiti
Cisco raccomanda la conoscenza dei seguenti argomenti:
- Hosting di app sugli switch Cisco Catalyst serie 9000
- Formati immagine contenitore Docker, in particolare standard DOCKER e Open Container Initiative (OCI)
- Differenze nelle versioni Docker Engine e loro compatibilità con le versioni Cisco IOS®
- Conoscenza di base della CLI di Cisco IOS® e risoluzione dei problemi di installazione dei contenitori
Componenti usati
Le informazioni fornite in questo documento si basano sulle seguenti versioni software e hardware:
- Cisco Catalyst serie 9300X Switch
- Software Cisco IOS®
- Applicazione di terze parti collocata come contenitore utilizzando il formato OCI
- Unità Solid-State Drive (SDD) come spazio di archiviazione per contenitori di hosting di app
Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.
Premesse
L'hosting di applicazioni sugli switch Cisco Catalyst serie 9000 consente l'installazione di applicazioni basate su container direttamente sull'hardware dello switch, utilizzando la piattaforma IOx. Questi contenitori utilizzano spesso il formato immagine Docker. Recenti sviluppi negli standard di imballaggio dei contenitori hanno introdotto il formato Open Container Initiative (OCI), che non è universalmente supportato in tutte le versioni di Docker Engine. Con il rilascio delle nuove versioni di Cisco IOS®, Cisco ha aggiunto in modo incrementale il supporto per le versioni più recenti di Docker Engine, ampliando così la compatibilità con i contenitori con pacchetto OCI. Tuttavia, non tutte le versioni Cisco IOS®, né tutte le piattaforme Catalyst, supportano la creazione di pacchetti OCI. Quando le organizzazioni cercano di implementare applicazioni di terze parti che utilizzano standard più recenti, la mancata corrispondenza tra le versioni software e i formati dei contenitori può causare errori di installazione e gli errori correlati.
Problema
L'obiettivo era quello di aggiornare o installare un'applicazione di terze parti come contenitore sugli switch Cisco Catalyst serie 9000, in particolare sui dispositivi con Cisco IOS® 17.6.4. L'applicazione era confezionata come immagine Docker conforme a OCI e archiviata nell'unità SSD. Durante l'installazione, il processo non è riuscito a causa di errori relativi alla struttura dei file di archivio e di BLOB obbligatori mancanti. Questa è una riproduzione e un'illustrazione dettagliata del problema.
Passaggio 1: Tentativo di installazione del contenitore su 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!
Questo messaggio di errore indica un errore durante l'estrazione dei file Docker dal file tar fornito, facendo riferimento in modo specifico ai BLOB di livello obbligatori mancanti. Ciò è sintomatico di un'incompatibilità tra il formato dell'immagine del contenitore e la versione del Docker Engine disponibile sullo switch.
Passaggio 2: controllare la struttura del file 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#
Nonostante l'estrazione, l'installazione non è riuscita, confermando che il problema non era relativo all'integrità dei file ma alla compatibilità dei formati. Il file tar contenitore è stato identificato come basato su una struttura OCI, che non è supportata dalla versione dockerd (Docker Daemon) presente in Cisco IOS® 17.6.4.
Passaggio 3: Controllare IOx e la versione dockerd sullo 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
Questo output mostra che lo switch esegue Dockerd versione 18.03.0, che non supporta i contenitori con pacchetto OCI. Questa è la radice dell'errore di installazione per le immagini in formato OCI.
Soluzione
La soluzione implica l'aggiornamento del software Cisco IOS® a una versione che supporti un Docker Engine (dockerd) abbastanza recente da consentire l'installazione di contenitori in formato OCI. Il processo è descritto passo per passo.
Passaggio 1: Aggiornamento dello switch a una versione compatibile di Cisco IOS®
Aggiornare lo switch a Cisco IOS® versione 17.8.1 o successive. Questa versione include Dockerd v19.03.13-ce o versione successiva, che supporta il packaging OCI.
Passaggio 2: Verifica della versione di Dockerd dopo l'aggiornamento
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
Accertarsi che Dockerd sia in esecuzione alla versione 19.03.13-ce o successiva. In questo caso, è ora possibile installare i contenitori in formato OCI.
Passaggio 3: Riprovare l'installazione del contenitore
Dopo aver confermato la versione del Docker Engine, ripetere il processo di installazione del contenitore. L'installazione viene ora completata senza errori correlati all'estrazione dell'archivio o a BLOB mancanti.
Causa
La causa del problema è stata l'uso di un'immagine contenitore confezionata nel formato Open Container Initiative (OCI), che non è supportato dalla versione di Docker Engine (dockerd 18.03.0) inclusa in Cisco IOS® 17.6.4. Solo Cisco IOS® versione 17.8.1 e successive, che includono Docker Engine v19.03.13-ce o successive, supportano il packaging OCI. L'aggiornamento del software Cisco IOS® risolve l'incompatibilità.
Informazioni correlate