Arquitetura de serviços Akri
Importante
Azure IoT Operations Preview – habilitado pelo Azure Arc está atualmente em visualização. Não deve utilizar este software de pré-visualização em ambientes de produção.
Você precisará implantar uma nova instalação do Azure IoT Operations quando uma versão disponível em geral for disponibilizada, você não poderá atualizar uma instalação de visualização.
Veja Termos de Utilização Complementares da Pré-visualizações do Microsoft Azure para obter os termos legais que se aplicam às funcionalidades do Azure que estão na versão beta, na pré-visualização ou que ainda não foram lançadas para disponibilidade geral.
Este artigo ajuda você a entender a arquitetura dos serviços Akri. Depois de aprender sobre os componentes principais dos serviços Akri, você pode usá-los para detetar 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 de código aberto Cloud Native Computing Foundation (CNCF).
Componentes centrais
Os serviços Akri consistem nas seguintes cinco componentes:
- A configuração Akri é um recurso personalizado onde você nomeia um dispositivo. Esta configuração informa aos serviços Akri que tipo de dispositivos procurar.
- Akri instância é um recurso personalizado que rastreia a disponibilidade e o uso de um dispositivo. Cada instância de Akri representa um dispositivo folha.
- Os manipuladores de descoberta Akri procuram o dispositivo configurado e informam o agente sobre os dispositivos descobertos.
- O agente Akri cria o recurso personalizado da instância Akri.
- Akri controlador ajuda você a usar um dispositivo configurado. O controlador vê cada instância do Akri e implanta um pod de broker que sabe como se conectar e usar o recurso.
Definições de recursos personalizadas
Uma definição de recurso personalizada (CRD) é uma extensão da API do Kubernetes que permite definir novos tipos de objeto. Existem dois CRDs de serviços Akri:
- Configuração
- Instância
CRD de configuração Akri
A configuração CRD 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 Akri configuration CRD. O esquema CRD especifica as configurações que todas as configurações devem ter, incluindo as seguintes configurações:
- O protocolo de descoberta 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 neste recurso.spec.brokerPodSpec
que define o pod do corretor 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 broker 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 brokers para todos os recursos associados à configuração.
Instância Akri CRD
Cada instância do Akri representa um recurso individual que é visível para o cluster. Por exemplo, se houver cinco câmeras IP visíveis para o cluster, há cinco instâncias. A instância CRD permite a coordenação de serviços Akri e o compartilhamento de recursos. Essas instâncias armazenam o estado interno e não se destinam a ser editadas. Para saber mais, consulte Compartilhamento de recursos em profundidade.
Agente
O agente Akri implementa Device-Plugins do Kubernetes para recursos descobertos. O Agente Akri executa as seguintes tarefas:
- Ele observa as alterações de configuração para determinar os recursos a serem pesquisados.
- Ele monitora 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 dos recursos.
Essas tarefas, combinadas com o estado armazenado na instância, permitem que vários nós compartilhem um recurso, respeitando os limites definidos pela spec.capacity
configuração.
Para saber mais, consulte Agente em profundidade.
Manipuladores de descoberta
Um manipulador de descoberta localiza dispositivos. Exemplos de dispositivos incluem:
- Sensores USB conectados a nós.
- GPUs incorporadas em nós.
- Câmeras IP na rede.
O manipulador de descoberta relata todos os dispositivos descobertos ao agente. Muitas vezes, há implementações de protocolo para descobrir um conjunto de dispositivos, seja um protocolo de rede como OPC UA ou um protocolo proprietário. Os manipuladores de descoberta implementam o DiscoveryHandler
serviço definido em discovery.proto
. Um manipulador de descoberta é necessário para se registrar com o agente, que hospeda o Registration
serviço definido em discovery.proto
.
Para saber mais, consulte Manipuladores de descoberta personalizados.
Comando
Os objetivos do controlador Akri são:
- Crie ou exclua os pods e serviços que permitem a disponibilidade de recursos.
- Certifique-se de que as instâncias estejam alinhadas ao estado do cluster a qualquer momento.
Para atingir esses objetivos, o controlador:
- Fique atento, por exemplo, às alterações para determinar quais pods e serviços devem existir.
- Observa os nós contidos em instâncias que não existem mais.
Essas tarefas permitem que o controlador Akri garanta que os corretores de protocolo e os serviços do Kubernetes estejam sendo executados em todos os nós e expondo os recursos desejados, respeitando os limites definidos pela spec.capacity
configuração.
Para obter mais informações, consulte a documentação do Controller In-depth.