Importazione di un volume EBS esistente

Panoramica

Se hai già un volume AWS Elastic Block Store (EBS) da importare in GKE su AWS, puoi creare un oggetto PersistentVolume (PV) e riservarlo per un PersistentVolumeClaim (PVC) specifico.

Questa pagina spiega come creare un PV utilizzando un volume EBS esistente compilato con dati e come utilizzare il PV in un pod.

Prima di iniziare

  • Dalla directory anthos-aws, utilizza anthos-gke per cambiare contesto e passare al cluster di utenti.
    cd anthos-aws
    env HTTPS_PROXY=http://localhost:8118 \
      anthos-gke aws clusters get-credentials CLUSTER_NAME
    Sostituisci CLUSTER_NAME con il nome del cluster di utenti.

Creazione di un volume permanente per un volume EBS esistente

Puoi importare un volume EBS esistente specificando un nuovo volume permanente.

  1. Copia il seguente codice YAML in un file denominato existing-volume.yaml e completa la configurazione sostituendo i valori:

    • volume-capacity: la dimensione del volume. Ad esempio, 30Gi. Per ulteriori informazioni su come specificare la capacità del volume in Kubernetes, consulta la sezione Significato della memoria.
    • storage-class-name: il nome della classe di archiviazione che provisiona il volume. Ad esempio, puoi utilizzare standard-rwo predefinito.

    • ebs-id: ID volume EBS. Ad esempio: vol-05786ec9ec9526b67.

    • fs-type: il file system del volume. Ad esempio: ext4.

    • zone: la zona di disponibilità AWS che ospita il volume EBS. Ad esempio, us-east-1c.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: volume-name
      annotations:
        pv.kubernetes.io/provisioned-by: ebs.csi.aws.com
    spec:
      capacity:
        storage: volume-capacity
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      storageClassName: storage-class-name
      claimRef:
        name: my-pvc
        namespace: default
      csi:
        driver: ebs.csi.aws.com
        volumeHandle: ebs-volume-id
        fsType: file-system-type
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: topology.ebs.csi.aws.com/zone
              operator: In
              values:
              - zone
    
  2. Applica il file YAML al cluster

    kubectl apply -f existing-volume.yaml
    
  3. Conferma la creazione del PV

    kubectl describe pv volume-name
    

    L'output di questo comando contiene lo stato dell'impianto fotovoltaico.

Utilizzo del volume con un oggetto PersistentVolumeClaim e un pod

Dopo aver importato il volume, puoi creare un PVC e un pod che lo colleghi.

Il codice YAML riportato di seguito crea un PVC e lo collega a un pod che esegue il server web Nginx. Copialo in un file denominato nginx.yaml e completa la configurazione sostituendo i valori:

  • storage-class: il nome della classe di archiviazione del volume permanente creato in precedenza. Ad esempio, standard-rwo.
  • volume-name: il nome del volume creato in precedenza.
  • volume-capacity: la dimensione del volume. Ad esempio, 30Gi.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  storageClassName: storage-class-name
  volumeName: volume-name
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: volume-capacity
---

apiVersion: v1
kind: Pod
metadata:
  name: web-server
spec:
  containers:
   - name: web-server
     image: nginx
     volumeMounts:
       - mountPath: /var/lib/www/html
         name: data
  volumes:
   - name: data
     persistentVolumeClaim:
       claimName: my-pvc
  1. Applica il file YAML al cluster

    kubectl apply -f nginx.yaml
    
  2. Controlla lo stato dell'istanza Nginx con kubectl describe. L'output dovrebbe avere un STATUS di Running.

    kubectl describe pod web-server
    

Utilizzo di volumi EBS criptati

Se il volume EBS è criptato con AWS Key Management Service (KMS), devi concedere al ruolo IAM del piano di controllo GKE su AWS l'accesso alla chiave KMS.

Per ottenere il nome del ruolo AWS IAM, svolgi i seguenti passaggi:

  1. Passa alla directory con la configurazione di GKE su AWS. Hai creato questa directory durante la installazione del servizio di gestione.

    cd anthos-aws

  2. Scegli se hai creato il tuo ambiente GKE su AWS con lo strumentoanthos-gke o se hai creato i tuoi profili IAM AWS manualmente.

    Strumento anthos-gke

    Utilizza il comando terraform output e cerca il valore di iamInstanceProfile.

    terraform output | grep iamInstanceProfile
    

    Se hai creato il tuo ambiente GKE su AWS con lo strumento anthos- gke, l'output sarà simile al seguente:

      iamInstanceProfile: gke-CLUSTER_ID-controlplane
      iamInstanceProfile: gke-CLUSTER_ID-nodepool
    

    dove CLUSTER_ID è l'ID del cluster. Copia il valore di gke-CLUSTER_ID-controlplane per il passaggio successivo.

    Creato manualmente

    Esamina l'output di terraform output con il seguente comando:

    terraform output | less
    

    Scorri l'output e individua iamInstanceProfile dopo la definizione di AWSCluster.

    kind: AWSCluster
    metadata:
      name: cluster-0
    spec:
      ...
      controlPlane:
       ...
        iamInstanceProfile: INSTANCE_PROFILE_NAME
    

    Copia il valore di INSTANCE_PROFILE_NAME per il passaggio successivo.

  3. Per concedere al control plane l'accesso ai volumi EBS, aggiungi il gke-xxxxxx-controlplane profilo IAM AWS come utente chiave alla chiave AWS KMS utilizzata per criptare il volume EBS.

Passaggi successivi