Compartilhar via


Arquitetura dos serviços Akri

Importante

O recurso Pré-visualização de Operações do Azure IoT — habilitado pelo Azure Arc — está atualmente em VERSÃO PRÉVIA. Você não deve usar esse software em versão prévia em ambientes de produção.

Você precisará implantar uma nova instalação do Azure IoT Operations quando uma versão geralmente disponível for disponibilizada, você não poderá atualizar uma instalação de visualização.

Veja os Termos de Uso Complementares para Versões Prévias do Microsoft Azure para obter termos legais que se aplicam aos recursos do Azure que estão em versão beta, versão prévia ou que, de outra forma, ainda não foram lançados em disponibilidade geral.

Este artigo ajuda você a entender a arquitetura dos serviços Akri. Depois de saber mais sobre os principais componentes do serviços Akri, você poderá usá-los para detectar dispositivos e ativos e adicioná-los ao cluster do Kubernetes.

Os serviços Akri são uma versão comercial gerenciada pela Microsoft do Akri, um projeto Cloud Native Computing Foundation (CNCF) de código aberto.

Componentes principais

Os serviços Akri consistem nos cinco componentes a seguir:

  • A configuração do Akri é um recurso personalizado em que você nomeia um dispositivo. Essa configuração informa aos serviços Akri que tipo de dispositivos procurar.
  • A Instância do Akri é um recurso personalizado que rastreia a disponibilidade e o uso de um dispositivo. Cada Instância do Akri representa um dispositivo folha.
  • Os Manipuladores de Descoberta do Akriprocuram o dispositivo configurado e informam o Agente sobre os dispositivos descobertos.
  • O Agente do Akri cria o recurso personalizado da instância do Akri.
  • O Controlador do Akri ajuda você a usar um dispositivo configurado. O Controlador vê cada Instância do Akri e implanta um Pod do agente que sabe como se conectar ao recurso e utilizá-lo.

Diagrama para a arquitetura dos serviços Akri.

Definições de Recurso Personalizadas

Uma Definição de Recurso Personalizado (CRD) é uma extensão da API do Kubernetes que permite definir novos tipos de objeto. Há dois CRDs de serviços Akri:

  • Configuração
  • Instância

CRD de Configuração do Akri

O CRD de configuração configura os serviços Akri. Você cria configurações que descrevem os recursos a serem descobertos e o pod a ser implantado em um nó que descobre um recurso. Para saber mais, consulte CRD de configuração do Akri. O esquema CRD especifica as configurações que todas as configurações devem ter, incluindo as seguintes configurações:

  • O protocolo de descoberta desejado para localizar recursos. Por exemplo, ONVIF ou udev.
  • spec.capacity que define o número máximo de nós que podem agendar cargas de trabalho nesse recurso.
  • spec.brokerPodSpec que define o pod do agente a ser agendado para cada um desses recursos relatados.
  • spec.instanceServiceSpec que define o serviço que fornece um único ponto de extremidade estável para acessar o conjunto de pods de agente de cada recurso individual.
  • spec.configurationServiceSpec que define o serviço que fornece um único ponto de extremidade estável para acessar o conjunto de todos os agentes para todos os recursos associados à configuração.

CRD da Instância do Akri

Cada instância do Akri representa um recurso individual visível para o cluster. Por exemplo, se houver cinco câmeras IP visíveis para o cluster, haverá cinco Instâncias. O CRD da instância habilita a coordenação dos serviços Akri e o compartilhamento de recursos. Essas instâncias armazenam o estado interno e não se destinam aos usuários a editar. Para saber mais, consulteCompartilhamento de recursos em detalhes.

Agente

O Agente do Akri implementa Plug-ins de dispositivo do Kubernetes para recursos descobertos. O Agente do Akri executa o seguinte fluxo de trabalho:

  • Observe as alterações de Configuração para determinar quais recursos pesquisar.
  • Monitore a disponibilidade de recursos para determinar quais recursos anunciar. Em um ambiente de borda, a disponibilidade de recursos muda com frequência.
  • Ele informa o Kubernetes sobre quaisquer alterações na integridade e disponibilidade do recurso.

Essas tarefas, combinadas com o estado armazenado na instância, permitem que vários nós compartilhem um recurso respeitando os limites definidos pela configuração spec.capacity.

Para saber mais, consulte Agente em detalhes.

Manipuladores de descoberta

Um manipulador de descoberta localiza dispositivos. Exemplos de dispositivo incluem:

  • Sensores USB conectados a nós.
  • GPUs inseridas em nós.
  • Câmeras IP na rede.

O Manipulador de Descoberta relata todos os dispositivos descobertos para o Agente. Geralmente, há implementações de protocolo para descobrir um conjunto de dispositivos, seja um protocolo de rede como o OPC UA ou um protocolo proprietário. Os Manipuladores de Descoberta implementam o serviço DiscoveryHandler definido em discovery.proto. Um Manipulador de Descoberta é necessário para se registrar no Agente, que hospeda o serviço Registration definido em discovery.proto.

Para saber mais, consulte Manipuladores de Descoberta Personalizada.

Controller

Os objetivos do controlador do Akri são:

  • Criar ou excluir os serviços e de pods que habilitam a disponibilidade de recursos.
  • Verifique se as instâncias estão alinhadas ao estado do cluster a qualquer momento.

Para atingir essas metas, o controlador:

  • Observe as alterações de instância para determinar quais pods e serviços devem existir.
  • Observe os nós contidos em Instâncias que não existem mais.

Esse fluxo de trabalho básico permite que o Controlador do Akri garanta que os agentes de protocolo e os Serviços do Kubernetes estejam em execução em todos os nós e expondo os recursos desejados, respeitando os limites definidos pela configuração spec.capacity.

Para obter mais informações, consulte a documentação do Controlador em detalhes.