Introdução
Este documento descreve a análise e a resolução de falhas de instalação de contêineres causadas por incompatibilidades de empacotamento OCI com o Cisco Catalyst
Pré-requisitos
Requisitos
A Cisco recomenda que você tenha conhecimento destes tópicos:
- Hospedagem de aplicativos em switches Cisco Catalyst 9000 Series
- Formatos de imagem de contêiner Docker, especificamente os padrões Docker e Open Container Initiative (OCI)
- Diferenças nas versões do Docker Engine e sua compatibilidade com as versões do Cisco IOS®
- Familiaridade básica com a CLI do Cisco IOS® e solução de problemas de instalações de contêineres
Componentes Utilizados
As informações neste documento são baseadas nestas versões de software e hardware:
- Switches Cisco Catalyst 9300X Series
- Cisco IOS® Software
- Aplicativo de terceiros empacotado como um contêiner usando o formato OCI
- Unidade de Estado Sólido (SDD) como armazenamento para contêineres de hospedagem de aplicativos
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Informações de Apoio
A hospedagem de aplicativos em switches Cisco Catalyst 9000 Series permite a implantação de aplicativos baseados em contêiner diretamente no hardware do switch, aproveitando a plataforma IOx. Esses contêineres geralmente usam o formato de imagem Docker. Desenvolvimentos recentes nos padrões de empacotamento de contêineres introduziram o formato Open Container Initiative (OCI), que não é suportado universalmente em todas as versões do Docker Engine. Com o lançamento das versões mais recentes do Cisco IOS®, a Cisco adicionou suporte incremental para as versões mais recentes do Docker Engine, expandindo, assim, a compatibilidade com contêineres do pacote OCI. No entanto, nem todas as versões do Cisco IOS®, nem todas as plataformas Catalyst, fornecem suporte para empacotamento OCI. À medida que as organizações buscam implantar aplicativos de terceiros que utilizam padrões mais novos, as incompatibilidades entre versões de software e formatos de contêiner podem causar falhas de instalação e erros relacionados.
Problema
O objetivo era atualizar ou instalar um aplicativo de terceiros como um contêiner nos switches Cisco Catalyst 9000 Series, especificamente em dispositivos que executam o Cisco IOS® 17.6.4. O aplicativo foi empacotado como uma imagem Docker compatível com OCI e armazenado na unidade SSD. Durante a instalação, o processo falhou com erros relacionados à estrutura do arquivo e blobs obrigatórios ausentes. Esta é uma reprodução detalhada e ilustração do problema.
Passo 1: Tente instalar o contêiner no 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!
Essa mensagem de erro indica uma falha durante a extração dos arquivos Docker do arquivo tar fornecido, referindo especificamente a ausência de blobs de camada obrigatórios. Isso é sintomático de uma incompatibilidade entre o formato de imagem do contêiner e a versão do mecanismo Docker disponível no switch.
Passo 2: inspecionar a estrutura do arquivo 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#
Apesar da extração, a instalação falhou, confirmando que o problema não estava na integridade do arquivo, mas na compatibilidade de formato. O arquivo tar do contêiner foi identificado como usando a estrutura OCI, que não é suportada pela versão do daemon Docker (dockerd) presente no Cisco IOS® 17.6.4.
Passo 3: Verificar IOx e versão Dockerd no 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
Esta saída mostra que o switch está executando o Dockerd versão 18.03.0, que não suporta contêineres empacotados OCI. Esta é a raiz da falha de instalação para imagens formatadas OCI.
Solução
A solução envolve a atualização do software Cisco IOS® para uma versão que suporte um Docker Engine (dockerd) recente o suficiente para permitir a instalação de contêineres formatados em OCI. O processo é descrito passo a passo.
Passo 1: Atualize o switch para uma versão compatível do Cisco IOS®
Atualize o switch para o Cisco IOS® versão 17.8.1 ou superior. Esta versão inclui o Dockerd v19.03.13-ce ou posterior, que suporta empacotamento OCI.
Passo 2: Verifique a versão do Dockerd após a atualização
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
Verifique se Dockerd está sendo executado em v19.03.13-ce ou superior. Nesse caso, os contêineres formatados OCI agora podem ser instalados com êxito.
Passo 3: Tente instalar o contêiner novamente
Após confirmar a versão do mecanismo Docker, repita o processo de instalação do contêiner. A instalação agora é concluída com êxito sem erros relacionados à extração do arquivo ou blobs ausentes.
Causa
A causa subjacente do problema foi o uso de uma imagem de contêiner empacotada no formato Open Container Initiative (OCI), que não é suportada pela versão do Docker Engine (dockerd 18.03.0) incluída no Cisco IOS® 17.6.4. Somente as versões 17.8.1 e superiores do Cisco IOS®, que incluem o Docker Engine v19.03.13-ce ou posterior, suportam empacotamento OCI. Atualizar o software Cisco IOS® resolve a incompatibilidade.
Informações Relacionadas