Come posso risolvere i problemi relativi ai miei montaggi di volumi Amazon EFS in Amazon EKS?

7 minuti di lettura
0

Desidero risolvere gli errori durante il montaggio di volumi Amazon Elastic File System (Amazon EFS) nel mio cluster Amazon Elastic Kubernetes Service (Amazon EKS).

Risoluzione

Quando installi il volume Amazon EFS nel tuo cluster Amazon EKS, potresti riscontrare uno dei seguenti errori nei tuoi pod:

  • “Output: mount.nfs4: montaggio di fs-18xxxxxx.efs.us-east-1.amazonaws.com: /path-in-dir:/non riuscito, motivo indicato dal server: File o directory inesistente”
  • “Output: Impossibile risolvere «fs-xxxxxx.efs.us-west-2.amazonaws.com». Verifica che l'ID del file system sia corretto”
  • “mount.nfs4: accesso negato dal server durante il montaggio di 127.0.0.1:/”
  • “mount.nfs: Connessione scaduta”
  • “Impossibile collegare o montare volumi: timeout in attesa della condizione”

Prima di iniziare la procedura di risoluzione dei problemi, verifica di disporre dei seguenti prerequisiti:

Verificare che i target di montaggio siano configurati correttamente

Assicurati di creare i target di montaggio EFS in ogni zona di disponibilità in cui sono in esecuzione i nodi EKS. Ad esempio, supponiamo che i nodi di lavoro siano distribuiti tra ** us-east-1a** e** us-east-1b**. In questo caso, create obiettivi di montaggio in entrambe le zone di disponibilità per il file system EFS che desiderate montare. Se non create correttamente i target di montaggio, i pod che montano il file system EFS restituiscono un errore simile al seguente messaggio:

“Output: Impossibile risolvere “fs-xxxxxx.efs.us-west-2.amazonaws.com”. Verifica che l'ID del file system sia corretto.”

Verifica che il gruppo di sicurezza associato al file system EFS e ai nodi di lavoro consenta il traffico NFS

Il gruppo di sicurezza del file system EFS deve disporre di una regola in entrata che consenta il traffico NFS dal CIDR al VPC del cluster. Consenti la porta 2049 per il traffico in entrata.

Il gruppo di sicurezza associato ai nodi di lavoro in cui i pod non riescono a montare il volume EFS deve disporre di una regola in uscita. In particolare, questa regola in uscita deve consentire il traffico NFS (porta 2049) verso il file system EFS.

Se il gruppo di sicurezza non consente il traffico NFS, i pod che montano il file system restituiscono i seguenti errori:

  • “mount.nfs: Connessione scaduta”
  • “Impossibile collegare o montare volumi: timeout in attesa della condizione”

Verifica che la sottodirectory sia stata creata nel file system EFS se state montando il pod in una sottodirectory

Quando si aggiungono percorsi secondari in volumi persistenti, il driver CSI EFS non crea il percorso della sottodirectory nel file system. Le directory devono essere già presenti affinché l'operazione di montaggio abbia successo. Se il sottopercorso non è presente nel file system, i pod falliscono con il seguente errore:

“Output: mount.nfs4: montaggio di fs-18xxxxxx.efs.us-east-1.amazonaws.com: /path-in-dir:/non riuscito, motivo indicato dal server: File o directory inesistente”

Verifica che il cloud privato virtuale del cluster utilizzi il server Amazon DNS

Quando si installa l'EFS con il driver CSI EFS, l'helper di montaggio EFS richiede l'utilizzo del server Amazon DNS per il VPC.

**Nota:**Il file system DNS del servizio EFS ha una limitazione architetturale AWS. Solo il DNS fornito da Amazon può risolvere il DNS del file system del servizio EFS.

Per verificare il server DNS, accedi al nodo di lavoro ed esegui il seguente comando:

nslookup fs-4fxxxxxx.efs.region.amazonaws.com AMAZON\_PROVIDED\_DNS\_IP

**Nota:**Sostituisci la regione con la tua regione AWS. Sostituisci AMAZON\ _PROVIDED\ _DNS\ _IP con il tuo indirizzo IP DNS. Per impostazione predefinita, questo è l'intervallo di rete VPC (10.0.0.0) più due.

Se il cluster VPC utilizza un server DNS personalizzato, configura questo server DNS per inoltrare tutte le richieste**\ .amazonaws.com* al server Amazon DNS. Se queste richieste non vengono inoltrate, i pod falliscono con un errore simile al seguente messaggio:

“Output: Impossibile risolvere “fs-4 fxxxxxx.efs.us-west-2.amazonaws.com”. Verifica che l'ID del file system sia corretto.”

Verifica di avere le opzioni di montaggio “iam” nella definizione del volume persistente quando usi una politica restrittiva del file system

In alcuni casi, la policy del file system EFS è configurata per limitare le autorizzazioni di montaggio a ruoli IAM specifici. In questo caso, l'helper di montaggio EFS richiede che l'opzione di montaggio\ -o iam passi durante l'operazione di montaggio. Includi la proprietà spec.mountOptionsper consentire al driver CSI di aggiungere l'opzione iam mount (dal sito Web di GitHub).

L'esempio seguente è una specifica PersistentVolume:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: efs-pv1
spec:
  mountOptions:
    - iam
. . . . . .

Se non aggiungi l'opzione** iam** mount con una politica restrittiva del file system, i pod falliscono con un errore simile al seguente messaggio:

“mount.nfs4: accesso negato dal server durante il montaggio di 127.0.0.1:/”

Verifica che l'account del servizio driver controller CSI di Amazon EFS sia annotato con il ruolo IAM corretto e che il ruolo IAM disponga delle autorizzazioni richieste

Per verificare che l'account di servizio utilizzato dai pod del efs-csi-controller abbia l'annotazione corretta, esegui il seguente comando:

kubectl describe sa efs-csi-controller-sa -n kube-system

Verificare che sia presente la seguente annotazione:

eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/AmazonEKS\_EFS\_CSI\_DriverRole

Verifica di aver completato i seguenti passaggi:

  • Hai creato il provider IAM OIDC per il cluster.
  • Il ruolo IAM associato all'account del servizio efs-csi-controller-sa dispone delle autorizzazioni necessarie (dal sito Web di GitHub) per eseguire chiamate API EFS.
  • La politica di fiducia del ruolo IAM considera attendibile l'account di servizio** efs-csi-controller-sa**. La politica di fiducia del ruolo IAM deve assomigliare al seguente esempio:
{
	"Version": "2012-10-17",
	"Statement": \[{
		"Effect": "Allow",
		"Principal": {
			"Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE"
		},
		"Action": "sts:AssumeRoleWithWebIdentity",
		"Condition": {
			"StringEquals": {
				"oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:efs-csi-controller-sa"
			}
		}
	}\]
}

Verificare che i pod dei driver CSI EFS siano in esecuzione

Il driver CSI EFS è composto da pod controller eseguiti come distribuzione e pod di nodi eseguiti come DaemonSet. Per verificare che questi pod siano in esecuzione nel cluster, esegui il seguente comando:

kubectl get all -l app.kubernetes.io/name=aws-efs-csi-driver -n kube-system

Verifica l'operazione di montaggio EFS dal nodo di lavoro EC2 in cui il pod non riesce a montare il file system

Accedi al nodo di lavoro Amazon EKS in cui è pianificato il pod. Quindi, usa l'helper di montaggio EFS per provare a montare manualmente il file system EFS sul nodo di lavoro. Per testare l'operazione di montaggio, esegui il seguente comando:

sudo mount -t -efs -o tls file-system-dns-name efs-mount-point/

Se il nodo di lavoro è in grado di montare il file system, esaminate i log del efs-plugindal controller CSI e dai pod dei nodi CSI.

Controlla i log dei pod dei driver CSI EFS

Controllate i log dei pod dei driver CSI per determinare la causa degli errori di montaggio. Se il volume non si monta, consulta i log dell’efs-plugin. Per recuperare i log del contenitore efs-plugin, esegui i seguenti comandi:

kubectl logs deployment/efs-csi-controller -n kube-system -c efs-plugin
kubectl logs daemonset/efs-csi-node -n kube-system -c efs-plugin
AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa