
Estou executando um cluster k3s em RPi4, com configuração heterogênea (um nó tem alta capacidade, mas um disco rígido lento, outro tem uma unidade SSD, um terceiro tem apenas um cartão SD).
Tenho volumes e reivindicações persistentes do tipo "caminho local", anexados a nós e pods, dependendo de minhas necessidades.
Estou enfrentando uma situação em que preciso agendar um pod no nó sem disco para processar os dados armazenados no nó com o disco SSD (recodificar alguns arquivos de vídeo para mp4 usando ffmpeg, e como este é um processo caro, eu 'gostaria de fazer isso em um nó ocioso e não tornar lento o nó que executa o SSD).
É possível montar de forma transparente um PV de um nó diferente? Preciso usar algum nfs? Existe um tipo de volume mais evoluído que pode ser usado no RPi4 bare-metal para fazer o que eu quero?
Olhar a documentação não ajudou muito (há vários tipos de volumes persistentes diferentes, sem muitos casos de uso descritos).
Obrigado
Responder1
Eu acho que você pode estar interessado emProjeto Longshorn.
É uma implementação de armazenamento persistente para qualquer cluster Kubernetes e usa os discos existentes de seus nós Kubernetes para fornecer armazenamento replicado e estável para seus pods Kubernetes.
Conforme descrito emLonghorn github:
Longhorn é leve, confiável e poderoso. Você pode instalar o Longhorn em um cluster Kubernetes existente com um comando kubectl apply ou usando gráficos Helm. Depois que o Longhorn é instalado, ele adiciona suporte de volume persistente ao cluster Kubernetes.
E o melhor de tudo, você pode usar o painel GUI intuitivo para personalizarChifre Longoàs suas necessidades.
Observação:Neste momento o Longhorn suporta apenasamd64.
Instalação
No exemplo abaixo, vou mostrar como instalarChifre Longo.
Primeiro de tudo você deve ter open-iscsi
instalado em cada nó do cluster. Você precisa instalá-lo usando, por exemplo:
apt-get install open-iscsi
Em seguida, aplique o longhorn.yaml
para instalarChifre Longo:
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml
Em seguida, crie um longhorn
StorageClass
(você pode personalizá-lo mais tarde usando ConfigMap
)
kubectl apply -f https://raw.githubusercontent.com/rancher/longhorn/master/deploy/longhorn.yaml
Isso é tudo que precisamos para começar a usarChifre Longo:)
IU do Longhorn
Como descrevi antes, podemos usar um painel GUI útil,aquivocê pode descobrir como acessá-lo.
Além disso, pode ser necessário expor o painel ao mundo externo usando Ingress
conforme descritoaqui
Usar Longhorn UI
o painel é bastante intuitivo, por exemplo, na guia "Nós", você pode facilmente especificar nós dedicados para fornecer armazenamento.
Classe de armazenamento longhorn
Você pode personalizar longhorn
StorageClass
editando longhorn-storageclass
ConfigMap
no longhorn-system
namespace. Por exemplo, editei numberOfReplicas
o parâmetro de 3
(padrão) para 1
:
root@kmaster:~# kubectl describe sc longhorn
Name: longhorn
IsDefaultClass: No
Annotations: longhorn.io/last-applied-configmap=kind: StorageClass
apiVersion: storage.k8s.io/v1
...
parameters:
numberOfReplicas: "1"
staleReplicaTimeout: "2880"
fromBackup: ""
...