Einleitung
Dieses Dokument beschreibt die Analyse und Behebung von Fehlern bei der Containerinstallation, die durch OCI-Verpackungsinkompatibilitäten mit Cisco Catalyst verursacht wurden.
Voraussetzungen
Anforderungen
Cisco empfiehlt, dass Sie über Kenntnisse in folgenden Bereichen verfügen:
- Anwendungshosting auf Cisco Catalyst Switches der Serie 9000
- Docker Container Bildformate, speziell Docker und Open Container Initiative (OCI) Standards
- Unterschiede bei den Versionen der Docker Engine und ihre Kompatibilität mit Cisco IOS® Versionen
- Grundlegende Informationen zur Cisco IOS® CLI und zur Fehlerbehebung bei Containerinstallationen
Verwendete Komponenten
Die Informationen in diesem Dokument basierend auf folgenden Software- und Hardware-Versionen:
- Cisco Catalyst Switches der Serie 9300X
- Cisco IOS® Software
- Anwendung eines Drittanbieters als Container im OCI-Format
- Solid-State-Laufwerk (SDD) als Speicher für App-Hosting-Container
Die Informationen in diesem Dokument beziehen sich auf Geräte in einer speziell eingerichteten Testumgebung. Alle Geräte, die in diesem Dokument benutzt wurden, begannen mit einer gelöschten (Nichterfüllungs) Konfiguration. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die möglichen Auswirkungen aller Befehle kennen.
Hintergrundinformationen
Das Anwendungshosting auf Cisco Catalyst Switches der Serie 9000 ermöglicht die Bereitstellung containerbasierter Anwendungen direkt auf der Switch-Hardware unter Nutzung der IOx-Plattform. Diese Container verwenden häufig das Docker-Bildformat. Durch die jüngsten Entwicklungen bei Containerverpackungsstandards wurde das Open Container Initiative (OCI)-Format eingeführt, das nicht in allen Docker Engine-Versionen unterstützt wird. Mit der Einführung neuer Cisco IOS®-Versionen hat Cisco die Unterstützung für neuere Docker Engine-Versionen schrittweise erweitert und so die Kompatibilität mit Containern im OCI-Paket erweitert. Nicht alle Cisco IOS®-Versionen und auch nicht alle Catalyst-Plattformen bieten Unterstützung für OCI-Pakete. Wenn Unternehmen Anwendungen von Drittanbietern bereitstellen möchten, die neuere Standards nutzen, können Diskrepanzen zwischen Softwareversionen und Containerformaten zu Installationsfehlern und damit zusammenhängenden Fehlern führen.
Problem
Das Ziel bestand darin, ein Upgrade durchzuführen oder eine Drittanbieteranwendung als Container auf Cisco Catalyst Switches der Serie 9000 zu installieren, insbesondere auf Geräten mit Cisco IOS® 17.6.4. Die Anwendung wurde als OCI-konformes Docker-Image verpackt und auf dem SSD-Laufwerk gespeichert. Während der Installation schlug der Prozess fehl, mit Fehlern in Bezug auf die Archivdateistruktur und fehlenden obligatorischen Blobs. Dies ist eine detaillierte Reproduktion und Darstellung des Themas.
Schritt 1: Versuchen Sie, den Container unter Cisco IOS® 17.6.4 zu installieren.
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!
Diese Fehlermeldung weist auf einen Fehler beim Extrahieren der Docker-Dateien aus der bereitgestellten TAR-Datei hin, insbesondere auf fehlende obligatorische Ebenenblobs. Dies ist symptomatisch für eine Inkompatibilität zwischen dem Containerbildformat und der auf dem Switch verfügbaren Version der Docker-Engine.
Phase 2: Struktur der TAR-Datei überprüfen
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#
Trotz der Extraktion ist die Installation fehlgeschlagen, was bestätigt, dass das Problem nicht die Dateiintegrität betrifft, sondern die Formatkompatibilität. Die Container-TAR-Datei verwendet die OCI-Struktur, die von der in Cisco IOS® 17.6.4 enthaltenen Version des Docker-Daemons (dockerd) nicht unterstützt wird.
Schritt 3: Überprüfen Sie die IOx- und Dockerversion des Switches.
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
Diese Ausgabe zeigt, dass auf dem Switch die Dockerd-Version 18.03.0 ausgeführt wird, die keine OCI-Container unterstützt. Dies ist die Ursache des Installationsfehlers für OCI-formatierte Images.
Lösung
Die Lösung umfasst ein Upgrade der Cisco IOS® Software auf eine Version, die eine ausreichend aktuelle Docker Engine (dockerd) unterstützt, um die Installation von Containern im OCI-Format zu ermöglichen. Das Verfahren wird Schritt für Schritt beschrieben.
Schritt 1: Aktualisieren Sie den Switch auf eine kompatible Cisco IOS®-Version.
Aktualisieren Sie den Switch auf Cisco IOS® Version 17.8.1 oder höher. Diese Version enthält Dockerd v19.03.13-ce oder höher, das OCI-Pakete unterstützt.
Phase 2: Überprüfen der Dockerd-Version nach dem Upgrade
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
Stellen Sie sicher, dass Dockerd unter v19.03.13-ce oder höher ausgeführt wird. Wenn dies der Fall ist, können nun erfolgreich Container im OCI-Format installiert werden.
Schritt 3: Container-Installation wiederholen
Wiederholen Sie nach der Bestätigung der Version der Docker-Engine den Container-Installationsvorgang. Die Installation wird jetzt erfolgreich abgeschlossen, ohne dass Fehler bei der Archivextraktion oder fehlende Blobs aufgetreten sind.
Ursache
Die zugrunde liegende Ursache des Problems war die Verwendung eines Container-Images im OCI-Format (Open Container Initiative), das von der Version der Docker Engine (dockerd 18.03.0), die in Cisco IOS® 17.6.4 enthalten ist, nicht unterstützt wird. Nur Cisco IOS®-Versionen 17.8.1 und höher, die Docker Engine enthalten v19.03.13-ce oder höher, Unterstützung für OCI-Pakete Durch ein Upgrade der Cisco IOS® Software wird die Inkompatibilität beseitigt.
Zugehörige Informationen