Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Use LVM to dynamically create local volumes

Última atualização: Jun 27, 2026

Provisione e gerencie volumes locais como PVs e PVCs em nós de cluster ACK Edge Pro com o LVM. Os pods são agendados nos nós com base na capacidade de armazenamento LVM disponível.

Pré-requisitos

  • Discos locais disponíveis nos nós do cluster.

  • A porta TCP 1736 no nó de armazenamento deve estar acessível a partir do nó da nuvem.

Etapa 1: Instale os add-ons node-resource-manager, csi-plugin e csi-provisioner

Esses add-ons fornecem suporte à Container Storage Interface (CSI) para volumes LVM locais. Instale todos os três antes de usar o LVM para gerenciar o armazenamento local.

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique em nome do cluster desejado e escolha Operations > Add-ons no painel de navegação à esquerda.

  3. Na página Add-ons, clique em aba Storage. Localize o node-resource-manager, o csi-plugin e o csi-provisioner, e clique em Install.

  4. Na caixa de diálogo, clique em OK.

Etapa 2: Configure o VolumeGroup

Um VolumeGroup especifica quais discos locais o LVM gerencia em um nó. Crie um ConfigMap para mapear rótulos de nós às topologias de disco. O termo VolumeGroup no texto descritivo corresponde ao campo volumegroup no YAML do ConfigMap.

Nota

Para garantir a segurança dos dados, os add-ons não excluem VolumeGroups ou volumes físicos (volumes físicos do LVM, distintos dos PersistentVolumes do Kubernetes). Exclua um VolumeGroup existente antes de redefini-lo.

  1. Configure a topologia do VolumeGroup com o seguinte ConfigMap:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: node-resource-topo
      namespace: kube-system
    data:
      volumegroup: |-
        volumegroup:
        - name: volumegroup1
          key: kubernetes.io/storagetype
          operator: In
          value: lvm
          topology:
            type: device
            devices:
            - /dev/sdb1
            - /dev/sdb2
            - /dev/sdc

    A tabela a seguir descreve os parâmetros.

    Parâmetro

    Descrição

    name

    Nome do VolumeGroup.

    key

    Chave do rótulo para correspondência nos nós.

    operator

    Operador do seletor de rótulos. Valores válidos: In, NotIn, Exists, DoesNotExist. Consulte a tabela de valores de operador abaixo.

    value

    Valor do rótulo a ser correspondido para a chave especificada.

    topology

    Topologia do dispositivo no nó. O campo topology.devices lista os caminhos dos discos locais a serem adicionados ao VolumeGroup.

    Valores do operador

    Valor

    Comportamento

    In

    Corresponde quando o valor do rótulo do nó é igual ao value especificado.

    NotIn

    Corresponde quando o valor do rótulo do nó difere do value especificado.

    Exists

    Corresponde quando o nó possui um rótulo com a chave especificada.

    DoesNotExist

    Corresponde quando o nó não possui um rótulo com a chave especificada.

  2. Adicione rótulos aos nós.

    Adicione os seguintes rótulos aos nós de armazenamento:

    • Rótulo de topologia personalizado: Rotule os nós de armazenamento para corresponder ao seletor do ConfigMap. Exemplo: kubernetes.io/storagetype=lvm.

    • Rótulo de habilitação de armazenamento local: Adicione alibabacloud.com/edge-enable-localstorage='true' para permitir o agendamento de pods de armazenamento local no nó.

    Após adicionar ambos os rótulos, o node-resource-manager cria automaticamente um volume físico e o adiciona ao VolumeGroup.

Etapa 3: Crie um PVC e implante uma carga de trabalho

Defina um PVC com a StorageClass no YAML a seguir e execute kubectl apply -f ****.yaml para criá-lo. Cada PVC mapeia para um volume lógico no nó, montado quando o pod inicia.

Nota

Neste exemplo, o storageClassName padrão é csi-local-lvm.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: lvm-pvc-test
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 50Mi
  storageClassName: csi-local-lvm

---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    k8s-app: local-test
  name: local-test
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: local-test
  template:
    metadata:
      labels:
        k8s-app: local-test
    spec:
      hostNetwork: true
      containers:
      - image: nginx:1.15.7-alpine
        imagePullPolicy: IfNotPresent
        name: nginx
        resources: {}
        volumeMounts:
          - name: local-pvc
            mountPath: /data
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      tolerations:
      - operator: Exists
      nodeSelector:
        alibabacloud.com/is-edge-worker: "true"
      volumes:
      - name: local-pvc
        persistentVolumeClaim:
          claimName: lvm-pvc-test

Verifique o resultado

Verifique se o volume lógico está montado:

kubectl exec -it local-test-564dfcf6dc-qhfsf sh
/ # ls /data

Saída esperada:

lost+found

Isso confirma que o volume lógico está montado no pod.