Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.