Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment résoudre les problèmes qui se produisent sur un cluster Microsoft Azure Kubernetes Service (AKS) lorsque vous essayez de définir les options de montage pour l’identificateur d’utilisateur (uid
) et l’identificateur de groupe (gid
) sur un disque Azure.
Symptômes
Si vous essayez de définir uid
et gid
de définir 1 000 dans le paramètre de la mountOptions
configuration de la classe de stockage du disque Azure, vous recevez une erreur semblable au texte suivant :
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
Cause
Le disque Azure utilise par défaut le filesytem ext4,xfs, et des options de montage telles que uid=x,gid=x
ne peuvent pas être définies au moment du montage.
Solution de contournement 1 : utiliser un contexte de sécurité de pod pour spécifier l’utilisateur et le groupe
Configurez le contexte de sécurité d’un pod. Dans le fichier de configuration de pod (format YAML), dans le spec
/securityContext
champ, définissez le runAsUser
champ sur la valeur spécifiée uid
précédemment et définissez le fsGroup
champ sur la valeur spécifiée gid
précédemment. Par exemple, le début du fichier de configuration peut ressembler au code suivant :
apiVersion: v1
kind: Pod
metadata:
name: security-context-demo
spec:
securityContext:
runAsUser: 0
fsGroup: 0
Note
Par défaut, les options gid
et uid
sont montées en tant que racine ou 0. Si ces options sont définies sur non racine (par exemple, 1000), Kubernetes utilise la commande change owner (chown
) pour modifier tous les répertoires et fichiers de ce disque. Cette opération peut prendre du temps et rendre l’opération de montage sur disque très lente.
Solution de contournement 2 : utiliser un conteneur init et la commande change owner pour spécifier l’utilisateur et le groupe
Configurez un conteneur init, puis exécutez une commande chown qui spécifie les valeurs d’utilisateur et de groupe dans le conteneur. Le code suivant montre comment configurer un conteneur init pour définir l’utilisateur et le groupe :
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
Exclusion de responsabilité de tiers
Les produits tiers mentionnés dans le présent article sont fabriqués par des sociétés indépendantes de Microsoft. Microsoft exclut toute garantie, implicite ou autre, concernant les performances ou la fiabilité de ces produits.
Contactez-nous pour obtenir de l’aide
Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.