Gerenciamento de armazenamento do Kubernetes em seu dispositivo de GPU Azure Stack Edge Pro
APLICA-SE A: Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
No dispositivo Azure Stack Edge Pro, um cluster Kubernetes é criado quando você configura a função de computação. Depois que o cluster Kubernetes é criado, os aplicativos em contêineres podem ser implantados no cluster Kubernetes em pods. Há maneiras distintas de fornecer armazenamento para pods em seu cluster Kubernetes.
Este artigo descreve os métodos para provisionar armazenamento em um cluster Kubernetes em geral e especificamente no contexto do seu dispositivo Azure Stack Edge Pro.
Requisitos de armazenamento para pods do Kubernetes
Os pods do Kubernetes são apátridas, mas os aplicativos que eles executam geralmente são stateful. Como os pods podem ter vida curta e reiniciar, fazer failover ou se mover entre nós do Kubernetes, os seguintes requisitos devem ser atendidos para armazenamento associado ao pod.
A armazenagem deve:
- Viva fora do pod.
- Seja independente do ciclo de vida do pod.
- Ser acessível a partir de todos os nós do Kubernetes.
Para entender como o armazenamento é gerenciado para o Kubernetes, é preciso entender dois recursos de API:
PersistentVolume (PV): Esta é 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 comoStorageClass
.PersistentVolumeClaim (PVC): Esta é uma solicitação de armazenamento por um usuário. Os PVCs consomem recursos fotovoltaicos. Os PVCs podem solicitar tamanhos e modos de acesso específicos.
Como os usuários precisam
PersistentVolumes
de propriedades variáveis para problemas diferentes, portanto, os administradores de cluster precisam ser capazes de oferecer uma variedade que diferem de mais maneiras do que apenas os modos dePersistentVolumes
tamanho e acesso. Para essas necessidades, você precisa doStorageClass
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 clusters do Kubernetes podem aprovisionar estaticamente o armazenamento. Para fazer isso, eles podem usar back-end de armazenamento baseado em sistemas de arquivos SMB/NFS ou usar discos iSCSI que se conectam 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 precisam planejar e gerenciar esse provisionamento.
Aqui está um diagrama que mostra como o armazenamento provisionado estaticamente é consumido no Kubernetes:
As seguintes etapas ocorrem:
Provisionar 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 Kubernetes correspondentes a esses compartilhamentos.
Armazenamento de declaração: você envia uma implantação de PVC que solicita o armazenamento. Essa declaração de armazenamento é o PersistentVolumeClaim (PVC). Se o tamanho e o modo de acesso do PV corresponderem ao do PVC, então o PVC está ligado ao PV. O PVC e o PV mapeiam um para um.
Monte o PVC no recipiente: Uma vez que o PVC está ligado ao PV, você pode montar esse PVC em um caminho em seu recipiente. 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 mostra como o armazenamento provisionado estaticamente é consumido no Kubernetes:
As seguintes etapas ocorrem:
Definir classe de armazenamento: o administrador do cluster define uma classe de armazenamento dependendo do ambiente operacional do cluster Kubernetes. O administrador do cluster também implanta um provisionador, que é mais um pod ou aplicativo implantado no cluster do Kubernetes. O provisionador tem todos os detalhes para provisionar as ações dinamicamente.
Armazenamento de declaração: você envia um aplicativo que reivindicaria o armazenamento. Depois que um PVC é criado com essa referência de classe de armazenamento, o provisionador é invocado.
Provisionar armazenamento dinamicamente: o provisionador cria dinamicamente o compartilhamento associado ao armazenamento em disco local. Uma vez que o compartilhamento é criado, ele também cria um objeto PV automaticamente correspondente a esse compartilhamento.
Monte o PVC no recipiente: Uma vez que o PVC está ligado ao PV, você pode montar o PVC no contêiner em um caminho da mesma forma que o provisionamento estático e ler ou gravar no compartilhamento.
Provisionamento de armazenamento no Azure Stack Edge Pro
No dispositivo Azure Stack Edge Pro, os provisionados PersistentVolumes
estaticamente são criados usando os recursos de armazenamento do dispositivo. Quando você provisiona um compartilhamento e a opção Usar o compartilhamento com computação de borda está habilitada, essa ação cria um recurso PV automaticamente no cluster do Kubernetes.
Para usar a hierarquização da nuvem, você pode criar um compartilhamento de nuvem de Borda com a opção Usar o compartilhamento com computação de Borda habilitada. Um PV é novamente criado automaticamente para este compartilhamento. Todos os dados de aplicativos gravados no compartilhamento de Borda são hierarquizados na nuvem.
Você pode criar compartilhamentos SMB e NFS para provisionar estaticamente PVs no dispositivo Azure Stack Edge Pro. Assim que o PV for provisionado, você enviará um PVC para reivindicar esse armazenamento. Aqui está um exemplo de uma implantação yaml
de PVC que reivindica 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 campo, selecione o Ponto de montagem local para módulos de volumeName
computação de borda 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 monitoração de estado por meio do provisionamento estático no Azure Stack Edge Pro via kubectl.
Para acessar o mesmo armazenamento provisionado estaticamente, as opções de montagem de volume correspondentes para associações de armazenamento para IoT são as seguintes. 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"
}]
}
}
O Azure Stack Edge Pro também tem um builtin StorageClass
chamado ase-node-local
que usa um armazenamento de disco de dados anexado ao nó Kubernetes. Isso StorageClass
oferece suporte ao provisionamento dinâmico. Você pode fazer uma StorageClass
referência nos aplicativos pod e um PV é criado automaticamente para você. Para obter mais informações, consulte o painel do Kubernetes para consultar ase-node-local StorageClass
o .
Para obter mais informações, consulte Implantar um aplicativo com monitoração de estado por meio do provisionamento dinâmico em seu Azure Stack Edge Pro via kuebctl.
Escolha o tipo de armazenamento
Talvez seja necessário escolher o tipo de armazenamento, dependendo da carga de trabalho que está implantando.
Se você quiser
ReadWriteMany
o modo de acesso para ondePersistentVolumes
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ê está implantando tiverem um requisito de conformidade POSIX, por exemplo, aplicativos como MongoDB, PostgreSQL, MySQL ou Prometheus, use o StorageClass integrado. 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 a volumes do Kubernetes.
Próximos passos
Para entender como você pode provisionar estaticamente um PersistentVolume
, consulte:
Para saber como você pode provisionar dinamicamente um StorageClass
, consulte: