Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official.

Volumes e Armazenamento

Ao implantar um aplicativo que precisa reter dados, você precisará criar armazenamento persistente. O armazenamento persistente permite que você armazene dados do aplicativo externamente ao pod que está executando seu aplicativo. Essa prática de armazenamento permite que você mantenha os dados do aplicativo, mesmo que o pod do aplicativo falhe.

Um volume persistente (PV) é uma unidade de armazenamento no cluster Kubernetes, enquanto uma solicitação de volume persistente (PVC) é um pedido de armazenamento. Para detalhes sobre como os PVs e PVCs funcionam, consulte a documentação oficial do Kubernetes sobre armazenamento.

K3s, como uma distribuição Kubernetes compatível, utiliza o Container Storage Interface (CSI) e Cloud Provider Interface (CPI) para gerenciar armazenamento persistente.

Esta página descreve como configurar armazenamento persistente com um provedor de armazenamento local ou com Longhorn.

Configurando o Provedor de Armazenamento Local

K3s vem com o Local Path Provisioner da Rancher, o que possibilita a criação de solicitações de volume persistente de forma simples usando armazenamento local no respectivo nó. Abaixo cobrimos um exemplo simples. Para mais informações, consulte a documentação oficial aqui.

Crie uma solicitação de volume persistente com hostPath e um pod para utilizá-lo:

pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: local-path-pvc
  namespace: default
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: local-path
  resources:
    requests:
      storage: 2Gi

pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: volume-test
  namespace: default
spec:
  containers:
  - name: volume-test
    image: nginx:stable-alpine
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - name: volv
      mountPath: /data
    ports:
    - containerPort: 80
  volumes:
  - name: volv
    persistentVolumeClaim:
      claimName: local-path-pvc

Aplique o yaml:

kubectl create -f pvc.yaml
kubectl create -f pod.yaml

Confirme que o PV e o PVC foram criados:

kubectl get pv
kubectl get pvc

O status deve ser Bound para cada um.

Configurando o Longhorn

O Longhorn não suporta ARM32.

O K3s suporta Longhorn, um sistema de armazenamento em blocos distribuído de código aberto para Kubernetes.

Abaixo cobrimos um exemplo simples. Para obter mais informações, consulte a documentação oficial.

Aplique o longhorn.yaml para instalar o Longhorn:

kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.8.1/deploy/longhorn.yaml

O Longhorn será instalado no namespace longhorn-system.

Crie uma solicitação de volume persistente e um pod para utilizá-lo:

pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: longhorn-volv-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: longhorn
  resources:
    requests:
      storage: 2Gi

pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: volume-test
  namespace: default
spec:
  containers:
  - name: volume-test
    image: nginx:stable-alpine
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - name: volv
      mountPath: /data
    ports:
    - containerPort: 80
  volumes:
  - name: volv
    persistentVolumeClaim:
      claimName: longhorn-volv-pvc

Aplique o yaml para criar o PVC e o pod:

kubectl create -f pvc.yaml
kubectl create -f pod.yaml

Confirme que o PV e o PVC foram criados:

kubectl get pv
kubectl get pvc

O status deve ser Bound para cada um.