Compartilhar via


Gerenciamento de armazenamento do Kubernetes em seu dispositivo Azure Stack Edge Pro GPU

APLICA-SE A:Yes for Pro GPU SKUAzure Stack Edge Pro - GPUYes for Pro 2 SKUAzure Stack Edge Pro 2Yes for Pro R SKUAzure Stack Edge Pro R Azure Stack Edge Mini RYes for Mini R SKU

No dispositivo Azure Stack Edge Pro, um cluster do Kubernetes é criado quando uma função de computação é configurada. Depois que o cluster do Kubernetes é criado, os aplicativos em contêineres podem ser implantados no cluster do Kubernetes em pods. Existem diferentes maneiras de fornecer armazenamento para pods no cluster do Kubernetes.

Este artigo descreve os métodos para provisionar o armazenamento em um cluster Kubernetes em geral e especificamente no contexto do Azure Stack Edge Pro dispositivo.

Requisitos de armazenamento para pods do Kubernetes

Os pods do Kubernetes não têm estado, mas os aplicativos executados geralmente têm estado. Como os pods podem ser de curta duração e reiniciam, fazem fail over ou se movem entre os nós do Kubernetes, os requisitos a seguir devem ser atendidos para o armazenamento associado ao pod.

O armazenamento deve:

  • Viver fora do pod.
  • Ser independente do ciclo de vida do pod.
  • Ser acessível em todos os nós do Kubernetes.

Para entender como o armazenamento é gerenciado para Kubernetes, é necessário entender dois recursos de API:

  • PersistentVolume (PV): é uma parte do armazenamento no cluster do Kubernetes. O armazenamento do Kubernetes pode ser provisionado estaticamente como PersistentVolume. Ele também pode ser provisionado dinamicamente como StorageClass.

  • PersistentVolumeClaim PVC: é uma solicitação de armazenamento por um usuário. Os PVCs consomem recursos de PV. Os PVCs podem solicitar modos específicos de tamanho e acesso.

    Como os usuários precisamPersistentVolumes de propriedades variáveis para diferentes problemas, portanto, os administradores de cluster precisam ser capazes de oferecer uma variedade dePersistentVolumes que diferem de mais maneiras do que apenas os modos de tamanho e acesso. Para essas necessidades, você precisa do StorageClass recurso.

O provisionamento de armazenamento pode ser estático ou dinâmico. Cada um dos tipos de provisionamento é discutido nas seções a seguir.

Provisionamento estático

Os administradores de cluster do Kubernetes podem provisionar estaticamente o armazenamento. Para fazer isso, eles podem usar o back-end de armazenamento com base em sistemas de arquivos SMB/NFS ou usar discos iSCSI anexados localmente pela rede em um ambiente local ou até mesmo usar Arquivos do Azure ou Discos do Azure na nuvem. Esse tipo de armazenamento não é provisionado por padrão e os administradores de cluster têm que planejar e gerenciar esse provisionamento.

Aqui está um diagrama que descreve como o armazenamento provisionado estaticamente é consumido no Kubernetes:

Static provisioning via PersistentVolumes

As seguintes etapas ocorrem:

  1. Provisionar o armazenamento: o administrador do cluster provisiona o armazenamento. Neste exemplo, o administrador de cluster cria um ou mais compartilhamentos SMB que criam automaticamente objetos de volume persistentes no cluster do Kubernetes correspondentes a esses compartilhamentos.

  2. Armazenamento de declarações: você envia uma implantação de PVC que solicita o armazenamento. Essa declaração para armazenamento é o PersistentVolumeClaim (PVC). Se o tamanho e o modo de acesso do PV corresponderem ao do PVC, o PVC será vinculado ao PV. O PVC e o PV mapeiam um para um.

  3. Montar o PVC para o contêiner: depois que o PVC estiver associado ao PV, você poderá montar esse PVC em um caminho em seu contêiner. Quando a lógica do aplicativo no contêiner lê/grava de/para esse caminho, os dados são gravados no armazenamento SMB.

Provisionamento dinâmico

Aqui está um diagrama que descreve como o armazenamento provisionado estaticamente é consumido no Kubernetes:

Dynamic provisioning via StorageClasses

As seguintes etapas ocorrem:

  1. Definir classe de armazenamento: o administrador de cluster define uma classe de armazenamento dependendo do ambiente operacional do cluster Kubernetes. O administrador do cluster também implanta um provisionador, que é outro pod ou aplicativo implantado no cluster do Kubernetes. O provisionador tem todos os detalhes para provisionar os compartilhamentos dinamicamente.

  2. Armazenamento de declarações: você envia um aplicativo que solicitaria o armazenamento. Depois que um PVC é criado com essa referência de classe de armazenamento, o provisionador é invocado.

  3. Provisionar o armazenamento dinamicamente: o provisionamento cria dinamicamente o compartilhamento associado ao armazenamento em disco local. Depois que o compartilhamento é criado, ele também cria um objeto PV correspondente automaticamente a esse compartilhamento.

  4. Montar PVC para contêiner: depois que o PVC estiver associado ao PV, você poderá montar o PVC no contêiner em um caminho da mesma forma que o provisionamento estático e leitura ou gravação no compartilhamento.

Provisionamento de armazenamento no Azure Stack Edge Pro

No dispositivo Azure Stack Edge Pro, provisionados estaticamente PersistentVolumes são criados usando os recursos de armazenamento do dispositivo. Quando você provisiona um compartilhamento e Usa o compartilhamento com a opção Computação do Edge habilitada, esta ação cria um recurso de PV automaticamente no cluster do Kubernetes.

Local share creation in Azure portal for static provisioning

Para usar a camada de nuvem, você pode criar um compartilhamento de nuvem do Edge com a opção Usar o compartilhamento com a computação de borda habilitada. Um PV é criado novamente automaticamente para esse compartilhamento. Todos os dados de aplicativo que você gravar no compartilhamento do Edge são em camadas na nuvem.

Cloud share creation in Azure portal for static provisioning

Você pode criar compartilhamentos SMB e NFS para provisionar estaticamente os PVs no dispositivo Azure Stack Edge Pro. Depois que o PV for provisionado, você enviará um PVC para reivindicar esse armazenamento. Aqui está um exemplo de uma implantação de PVC yaml que declara o armazenamento e usa os compartilhamentos provisionados.

kind: PersistentVolumeClaim 
apiVersion: v1 
metadata: 
  name: pvc-smb-flexvol 
spec: 
  accessModes: 
  - ReadWriteMany 
  resources: 
    requests: 
      storage: 10Gi 
  volumeName: <nfs-or-smb-share-name-here> 
  storageClassName: ""

Para obter o valor do volumeNamecampo, selecione o Ponto de montagem local para módulos de computação do Edge ao selecionar o compartilhamento SMB ou NFS após a criação. Isso é o mesmo que o nome do compartilhamento.

Para obter mais informações, consulte Implantar um aplicativo com estado por meio do provisionamento estático em seu Azure Stack Edge Pro por meio do kubectl.

Para acessar o mesmo armazenamento provisionado estaticamente, as opções de montagem de volume correspondentes para as vinculações de armazenamento para IoT são as opções a seguir. O /home/input é o caminho no qual o volume está acessível dentro do contêiner.

{
"HostConfig": {
"Mounts": [
{
"Target": "/home/input",
"Source": "<nfs-or-smb-share-name-here>",
"Type": "volume"
},
{
"Target": "/home/output",
"Source": "<nfs-or-smb-share-name-here>",
"Type": "volume"
}]
}
}

Azure Stack Edge Pro também tem um interno StorageClass chamado ase-node-local que usa um armazenamento de disco de dados anexado ao nó Kubernetes. Isso StorageClass dá suporte ao provisionamento dinâmico. Você pode fazer uma StorageClass referência nos aplicativos de pod e um PV é criado automaticamente para você. Para obter mais informações, consulte o painel do Kubernetes para consultar o ase-node-local StorageClass.

Built-in storage class in Kubernetes dashboard

Para obter mais informações, consulte Implantar um aplicativo com estado por meio do provisionamento dinâmico em seu Azure Stack Edge Pro via kuebctl.

Escolher o tipo de armazenamento

Talvez seja necessário escolher o tipo de armazenamento, dependendo da carga de trabalho que você está implantando.

  • Se você quiser ReadWriteManyo modo de acesso para o seuPersistentVolumes em que os volumes são montados como leitura/gravação por muitos nós implantando, use o provisionamento estático para os compartilhamentos SMB/NFS.

  • Se os aplicativos que você estiver implantando têm um requisito de conformidade POSIX, por exemplo, aplicativos como MongoDB, PostgreSQL, MySQL ou Prometheus, use o StorageClass interno. Os modos de acesso são ReadWriteOnce ou o volume é montado como leitura/gravação por um único nó.

Para obter mais informações sobre modos de acesso, consulte Modo de acesso de volumes do Kubernetes.

Próximas etapas

Para entender como você pode provisionar estaticamente um PersistentVolume, consulte:

Para saber como provisionar dinamicamente um StorageClass, confira: