Configura l'archiviazione di Distributed Cloud connesso

Questa pagina descrive come configurare l'archiviazione connessa a Distributed Cloud, tra cui:

Configura Distributed Cloud connesso per Symcloud Storage

Per impostazione predefinita, i carichi di lavoro in esecuzione su un nodo rack Google Distributed Cloud connesso non possono accedere allo spazio di archiviazione locale di un altro nodo rack Distributed Cloud connesso. Tuttavia, puoi configurare i rack Distributed Cloud connected per utilizzare Rakuten Symcloud Storage, una soluzione di terze parti che funge da livello di astrazione dello spazio di archiviazione locale su ogni nodo Distributed Cloud connected e rende disponibile lo spazio di archiviazione locale ai carichi di lavoro in esecuzione su altri nodi Distributed Cloud connected. Symcloud Storage è l'opzione di archiviazione predefinita e unica sui server Google Distributed Cloud connected.

Symcloud Storage viene implementato da Google Cloud Marketplace ed è soggetto ai termini ivi indicati. Google fornisce un supporto limitato per l'utilizzo di Symcloud Storage con Distributed Cloud connesso e potrebbe coinvolgere il fornitore di terze parti per ricevere assistenza. Gli aggiornamenti software per Symcloud Storage sono inclusi negli aggiornamenti software connessi a Distributed Cloud.

Questa release di Distributed Cloud connesso viene fornita con Symcloud Storage 5.4.10 e lo supporta. In questa release di Distributed Cloud Connected non è supportata nessun'altra versione di Symcloud Storage.

Classi di archiviazione Symcloud

Questa sezione descrive le classi di archiviazione che Symcloud Storage può abilitare nel cluster connesso a Distributed Cloud. Symcloud Storage su Distributed Cloud Connected non supporta la classe di archiviazione robin-rwx né alcun volume in modalità file system RWX configurato personalizzato. Per ulteriori informazioni sulle classi di archiviazione Symcloud, consulta Utilizzo di Robin CNS in Kubernetes.

Classe di archiviazione robin

La classe di archiviazione robin è una classe di archiviazione di base Read Write-Once (RWO). L'esempio seguente illustra l'istanza della classe:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
    name: robin
    labels:
        app.kubernetes.io/instance: robin
        app.kubernetes.io/managed-by: robin.io
        app.kubernetes.io/name: robin
provisioner: robin
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer

Classe di archiviazione robin-immediate

La classe di archiviazione robin-immediate è uguale a robin, tranne per il fatto che il volume permanente viene creato immediatamente dopo la creazione della richiesta di volume permanente corrispondente. L'esempio seguente illustra l'istanza della classe:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
    name: robin-immediate
    labels:
        app.kubernetes.io/instance: robin
        app.kubernetes.io/managed-by: robin.io
        app.kubernetes.io/name: robin
provisioner: robin
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: Immediate

Classe di archiviazione robin-repl-3

robin-repl-3 è una classe di archiviazione RWO con tre repliche che si estendono su più nodi Distributed Cloud. L'esempio seguente illustra l'istanza della classe:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
    name: robin-repl-3
    labels:
        app.kubernetes.io/instance: robin
        app.kubernetes.io/managed-by: robin.io
        app.kubernetes.io/name: robin
provisioner: robin
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer
parameters:
    replication: "3"
    faultdomain: host

Prerequisiti

Prima di iniziare, completa i seguenti passaggi:

  1. Configura la registrazione e il monitoraggio per il progetto connesso a Distributed Cloud di destinazione.
  2. Crea il cluster Google Distributed Cloud connesso di destinazione.
  3. Configura il networking di Distributed Cloud in modo che i pod nel cluster connesso Distributed Cloud di destinazione possano raggiungere il data center Google Cloud .
  4. Collega ogni volume persistente local-block su ogni nodo Distributed Cloud che non vuoi che venga astratto da Symcloud Storage. Se annulli il binding di un volume permanente local-block, l'installazione di Symcloud Storage cancella i contenuti di questo volume permanente. Per istruzioni, vedi Binding nella documentazione di Kubernetes.

Installa Symcloud Storage su un nodo Distributed Cloud connesso

Per installare Symcloud Storage su un nodo connesso a Distributed Cloud, completa i seguenti passaggi:

  1. Utilizza il seguente comando per applicare la licenza Symcloud Storage al tuo cluster. Sostituisci LICENSE_FILE con il percorso completo e il nome del file di licenza di Symcloud Storage.

    kubectl apply -f LICENSE_FILE -n robin-admin
    
  2. Utilizza il seguente comando per verificare lo stato del servizio RobinCluster e di tutti i nodi di Symcloud Storage:

    kubectl describe robinclusters -n robinio
    

    Il comando restituisce un output simile al seguente:

    [...]
    Status:
    [...]
    Phase:              Ready
    robin_node_status:
    [...]
     Status:           Ready
    [...]
     Status:           Ready
    [...]
     Status:           Ready
    [...]
    

    Lo stato previsto per il servizio e i nodi è Ready.

Impostare Symcloud Storage come classe di archiviazione predefinita

Utilizza il seguente comando per impostare Symcloud Storage come classe di archiviazione predefinita nel cluster connesso Distributed Cloud. Sostituisci STORAGE_CLASS con una delle classi di archiviazione Symcloud.

kubectl patch storageclass STORAGE_CLASS -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

Per saperne di più sull'impostazione della classe di archiviazione predefinita, consulta Modificare StorageClass predefinita nella documentazione di Kubernetes.

Configura i volumi di archiviazione Symcloud astratti per i workload

Questa sezione fornisce esempi di come utilizzare le classi di archiviazione Symcloud per configurare l'archiviazione astratta per i carichi di lavoro connessi a Distributed Cloud. Per ulteriori dettagli sulla configurazione dei volumi di archiviazione Symcloud, consulta Utilizzo di Robin CNS in Kubernetes.

Configura un volume RWO ext4 in modalità file system

Il seguente esempio mostra come configurare una richiesta di volume permanente per un volume RWO in modalità file system con il file system ext4. Sostituisci STORAGE_CLASS con una delle classi di archiviazione Symcloud.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rwo-fs-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: STORAGE_CLASS

Configurare un volume RWO in modalità blocco

Il seguente esempio illustra come configurare una richiesta di volume permanente per un volume RWO in modalità blocco. Sostituisci STORAGE_CLASS con una delle classi di archiviazione Symcloud.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rwo-block-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: STORAGE_CLASS
  volumeMode: Block

Modificare la configurazione di un volume esistente

L'esempio seguente mostra come modificare la configurazione di un volume RWO compresso LZ4 di Symcloud Storage esistente utilizzando le annotazioni. SostituisciSTORAGE_CLASS con una delle classi di archiviazione Symcloud.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: compressed-rwo-fs-pvc
  annotations:
    robin.io/compression: LZ4
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: STORAGE_CLASS

L'esempio seguente mostra come modificare la configurazione di un volume Symcloud Storage RWO esistente con il file system xfs utilizzando le annotazioni. SostituisciSTORAGE_CLASS con una delle classi di archiviazione Symcloud.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rwo-xfs-pvc
  annotations:
    robin.io/fstype: xfs
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: STORAGE_CLASS

Configura il client CLI di Symcloud Storage

Symcloud Storage fornisce un client dell'interfaccia a riga di comando (CLI) che puoi utilizzare per gestire la configurazione di Symcloud Storage. Per configurare il client sul cluster connesso Distributed Cloud, completa i seguenti passaggi:

  1. Ottieni il percorso dell'immagine di Symcloud Storage utilizzata dall'istanza del servizio RobinCluster di cui è stato eseguito il deployment nel cluster connesso di Distributed Cloud e imposta le variabili di ambiente nel seguente modo:

    image_robin=$(kubectl get robincluster -o jsonpath='{.items[].spec.image_robin}')
    image_registry_path=$(kubectl get robincluster -o jsonpath='{.items[].spec.image_registry_path}')
    ROBIN_CNS_IMAGE="$image_registry_path/$image_robin"
    
  2. Crea una risorsa robincli con il seguente contenuto:

    kind: Deployment
    apiVersion: apps/v1
    metadata:
     name: robincli
     namespace: default
     labels:
       name: robincli
    spec:
     replicas: 1
     selector:
       matchLabels:
         name: robincli
     template:
       metadata:
         annotations:
           product: robin
         labels:
           name: robincli
       spec:
         containers:
         - name: robincli
           image: ROBIN_CNS_IMAGE
           workingDir: /root
           command: ["/bin/bash","-c","mkdir -p /root/.robin; ln -s -t /usr/lib/python3.7/site-packages/ /opt/robin/current/python3/site-packages/robincli /opt/robin/current/python3/site-packages/stormgr_def.py /opt/robin/current/python3/site-packages/stormgr_lib.py; /opt/robin/current/bin/robin client add-context robin-master.robinio --set-current; while true; do sleep 10000; done"]
           resources:
             requests:
               memory: "10Mi"
               cpu: "100m"
    

    Sostituisci ROBIN_CNS_IMAGE con il percorso completo del repository e il nome dell'immagine che hai ottenuto nel passaggio 1.

  3. Applica la risorsa robincli al tuo cluster Distributed Cloud connected.

  4. Al momento dell'installazione iniziale, Symcloud Storage genera un secret default-admin-user nello spazio dei nomi robinio con una password casuale. Utilizza i seguenti comandi per ottenere queste credenziali di accesso:

    1. Ottieni il nome utente:

      kubectl -n robinio get secret default-admin-user -o jsonpath='{.data.username}' | base64 -d
      
    2. Recupera la password:

       
      kubectl -n robinio get secret default-admin-user -o jsonpath='{.data.password}' | base64 -d
      
  5. Accedi al pod appena creato ed esegui il client:

    kubectl exec -it robincli -- bash
    

Limitazioni di Symcloud Storage

Quando utilizzi Symcloud Storage con Distributed Cloud connected, puoi ottenere la disponibilità elevata solo se il cluster Distributed Cloud connected è composto da tre o più nodi Distributed Cloud connected.

Rimozione di nodi che utilizzano Symcloud Storage da un cluster

Le repliche del volume di archiviazione Symcloud vengono archiviate sui nodi worker all'interno del cluster connesso Distributed Cloud. Se rimuovi un nodo dal cluster, i dati del volume di Symcloud Storage archiviati su quel nodo non saranno più disponibili. Per evitare questo problema, devi eseguire una delle seguenti operazioni:

  • Se stai smantellando l'intero cluster, rimuovi i carichi di lavoro e i volumi permanenti di Symcloud Storage corrispondenti prima di smantellare il cluster stesso.

  • Se rimuovi nodi specifici dal cluster, devi eseguire la migrazione dei dati del workload archiviati su questi nodi prima di rimuoverli dal cluster. Per istruzioni, vedi Evacuare i volumi da un disco.

Configurare gli schemi di archiviazione locale

Uno schema di archiviazione è un raggruppamento logico di una o più partizioni. Ogni partizione è un'unità di archiviazione logicamente indipendente. Le partizioni vengono create sul cluster in sequenza finché lo spazio su disco fisico non è esaurito. Ogni schema di archiviazione ha un nome univoco che lo identifica.

Per creare un nuovo schema di archiviazione locale per il cluster connesso Distributed Cloud, devi richiederlo a Google. Una volta testato lo schema e creato sul cluster, puoi applicarlo utilizzando la CLI gcloud.

Non puoi modificare uno schema dopo che è stato applicato a un cluster. Per modificare uno schema esistente, devi richiedere a Google l'eliminazione dello schema esistente e poi richiedere la creazione di un nuovo schema per sostituirlo.

Definisci le partizioni per uno schema di archiviazione locale

Prima di poter richiedere uno schema di archiviazione locale, devi prima definire le partizioni per lo schema.

Una partizione ha le seguenti proprietà:

  • Dimensioni. Puoi specificare le dimensioni di una partizione in byte binari o utilizzare tutto lo spazio rimanente sul disco locale.
  • Tipo. Puoi configurare una partizione come Persistent Volume (PV) di Kubernetes o come volume locale Linux sul disco locale.
  • Modalità. Puoi configurare il volume archiviato nella partizione come volume a blocchi o volume del file system. Per le partizioni del volume permanente, la classe di archiviazione della partizione è local-block o local-disks, rispettivamente. Per le partizioni del volume locale, puoi specificare i punti di montaggio e di binding per i file system contenuti.

Richiedere uno schema di archiviazione locale

Per richiedere un nuovo schema di archiviazione locale per il cluster connesso Distributed Cloud, contatta l'assistenza Google e fornisci le dimensioni, il tipo, la modalità e, facoltativamente, i punti di montaggio e di binding per ogni partizione che vuoi creare nello schema.

Quando riceviamo la tua richiesta, eseguiamo una serie di test per garantire la robustezza dello schema, quindi lo creiamo sul cluster connesso a Distributed Cloud.

Schemi di archiviazione locale predefiniti

Distributed Cloud Connected viene fornito con i seguenti schemi di archiviazione locale predefiniti:

  • default_control_plane_node. Questo schema definisce le seguenti partizioni:

    • Una partizione del volume locale da 100 GB in modalità file system.
    • Una partizione del volume permanente in modalità a blocchi che occupa lo spazio libero rimanente sul disco.
  • default_worker_node. Questo schema definisce una partizione del volume permanente da 410 GB in modalità a blocchi.

Applica uno schema di archiviazione locale a un cluster

Per applicare uno schema di archiviazione locale al cluster connesso a Distributed Cloud, esegui una delle seguenti operazioni:

  • Per applicare uno schema di archiviazione locale ai nodi del control plane del cluster, utilizza il flag --control-plane-node-storage-schema quando crei il cluster. Per ulteriori informazioni, vedi Creare un cluster.

  • Per applicare uno schema di archiviazione locale ai nodi worker del cluster, utilizza --node-storage-schema quando crei un pool di nodi per il cluster. Per saperne di più, consulta Creare un pool di nodi.

Distributed Cloud connected crea le partizioni definite nello schema di archiviazione locale dopo la creazione del cluster o del pool di nodi.