Condividi tramite


Non è possibile impostare le opzioni di montaggio uid e gid in un disco di Azure

Questo articolo illustra come risolvere i problemi che si verificano in un cluster del servizio Microsoft Azure Kubernetes quando si tenta di impostare le opzioni di montaggio per l'identificatore utente (uid) e l'identificatore di gruppo (gid) in un disco di Azure.

Sintomi

Se si tenta di impostare uid e gid su 1000 nell'impostazione mountOptions della configurazione della classe di archiviazione del disco di Azure, viene visualizzato un errore simile al testo seguente:

Warning  FailedMount             63s                  kubelet, aks-nodepool1-29460110-0  MountVolume.MountDevice failed for volume "pvc-d783d0e4-85a1-11e9-8a90-369885447933" : azureDisk - mountDevice:FormatAndMount failed with mount failed: exit status 32
Mounting command: systemd-run
Mounting arguments: --description=Kubernetes transient mount for /var/lib/kubelet/plugins/kubernetes.io/azure-disk/mounts/m436970985 --scope -- mount -t xfs -o dir_mode=0777,file_mode=0777,uid=1000,gid=1000,defaults /dev/disk/azure/scsi1/lun2 /var/lib/kubelet/plugins/kubernetes.io/azure-disk/mounts/m436970985
Output: Running scope as unit run-rb21966413ab449b3a242ae9b0fbc9398.scope.
mount: wrong fs type, bad option, bad superblock on /dev/sde,
       missing codepage or helper program, or other error

Causa

Per impostazione predefinita, il disco di Azure usa i file system ext4 e xfs e le opzioni di montaggio come uid=x,gid=x non possono essere impostate in fase di montaggio.

Soluzione alternativa 1: usare un contesto di sicurezza dei pod per specificare l'utente e il gruppo

Configurare il contesto di protezione per un pod. Nel file di configurazione del pod (formato YAML) nel spec/securityContext campo impostare il runAsUser campo sul valore specificato uid in precedenza e impostare il fsGroup campo sul valore specificato gid in precedenza. Ad esempio, l'inizio del file di configurazione potrebbe essere simile al codice seguente:

apiVersion: v1
kind: Pod
metadata:
  name: security-context-demo
spec:
  securityContext:
    runAsUser: 0
    fsGroup: 0

Note

Per impostazione predefinita, le opzioni gid e uid vengono montate come radice o 0. Se queste opzioni sono impostate come non radice (ad esempio 1000), Kubernetes userà il comando "change owner" (chown) per modificare tutte le directory e i file all'interno di tale disco. Questa operazione può richiedere molto tempo e potrebbe rallentare l'operazione di montaggio del disco.

Soluzione alternativa 2: usare un contenitore init e il comando "change owner" per specificare l'utente e il gruppo

Configurare un contenitore init e quindi eseguire un comando chown che specifichi i valori utente e gruppo nel contenitore. Il codice seguente illustra come configurare un contenitore init per impostare l'utente e il gruppo:

initContainers:
- name: volume-mount
  image: mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11
  command: ["sh", "-c", "chown -R 100:100 /data"]
  volumeMounts:
  - name: <your-data-volume>
    mountPath: /data

Dichiarazione di non responsabilità sulle informazioni di terze parti

I prodotti di terzi citati in questo articolo sono prodotti da società indipendenti da Microsoft. Microsoft non rilascia alcuna garanzia implicita o esplicita relativa alle prestazioni o all'affidabilità di tali prodotti

Contattaci per ricevere assistenza

In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.