Panoramica
Se hai già un volume AWS Elastic Block Store (EBS) da importare in GKE su AWS, puoi creare un oggetto PersistentVolume (PV) e riservarlo per un PersistentVolumeClaim (PVC) specifico.
Questa pagina spiega come creare un PV utilizzando un volume EBS esistente compilato con dati e come utilizzare il PV in un pod.
Prima di iniziare
- Dalla directory
anthos-aws
, utilizzaanthos-gke
per cambiare contesto e passare al cluster di utenti. Sostituisci CLUSTER_NAME con il nome del cluster di utenti.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
Creazione di un volume permanente per un volume EBS esistente
Puoi importare un volume EBS esistente specificando un nuovo volume permanente.
Copia il seguente codice YAML in un file denominato
existing-volume.yaml
e completa la configurazione sostituendo i valori:- volume-capacity: la dimensione del volume. Ad esempio,
30Gi
. Per ulteriori informazioni su come specificare la capacità del volume in Kubernetes, consulta la sezione Significato della memoria. storage-class-name: il nome della classe di archiviazione che provisiona il volume. Ad esempio, puoi utilizzare
standard-rwo
predefinito.ebs-id: ID volume EBS. Ad esempio:
vol-05786ec9ec9526b67
.fs-type: il file system del volume. Ad esempio:
ext4
.zone: la zona di disponibilità AWS che ospita il volume EBS. Ad esempio,
us-east-1c
.
apiVersion: v1 kind: PersistentVolume metadata: name: volume-name annotations: pv.kubernetes.io/provisioned-by: ebs.csi.aws.com spec: capacity: storage: volume-capacity accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: storage-class-name claimRef: name: my-pvc namespace: default csi: driver: ebs.csi.aws.com volumeHandle: ebs-volume-id fsType: file-system-type nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: topology.ebs.csi.aws.com/zone operator: In values: - zone
- volume-capacity: la dimensione del volume. Ad esempio,
Applica il file YAML al cluster
kubectl apply -f existing-volume.yaml
Conferma la creazione del PV
kubectl describe pv volume-name
L'output di questo comando contiene lo stato dell'impianto fotovoltaico.
Utilizzo del volume con un oggetto PersistentVolumeClaim e un pod
Dopo aver importato il volume, puoi creare un PVC e un pod che lo colleghi.
Il codice YAML riportato di seguito crea un PVC e lo collega a un pod che esegue il server web Nginx. Copialo in un file denominato nginx.yaml
e completa la configurazione
sostituendo i valori:
- storage-class: il nome della classe di archiviazione del volume permanente creato in precedenza. Ad esempio,
standard-rwo
. - volume-name: il nome del volume creato in precedenza.
- volume-capacity: la dimensione del volume. Ad esempio,
30Gi
.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
storageClassName: storage-class-name
volumeName: volume-name
accessModes:
- ReadWriteOnce
resources:
requests:
storage: volume-capacity
---
apiVersion: v1
kind: Pod
metadata:
name: web-server
spec:
containers:
- name: web-server
image: nginx
volumeMounts:
- mountPath: /var/lib/www/html
name: data
volumes:
- name: data
persistentVolumeClaim:
claimName: my-pvc
Applica il file YAML al cluster
kubectl apply -f nginx.yaml
Controlla lo stato dell'istanza Nginx con
kubectl describe
. L'output dovrebbe avere unSTATUS
diRunning
.kubectl describe pod web-server
Utilizzo di volumi EBS criptati
Se il volume EBS è criptato con AWS Key Management Service (KMS), devi concedere al ruolo IAM del piano di controllo GKE su AWS l'accesso alla chiave KMS.
Per ottenere il nome del ruolo AWS IAM, svolgi i seguenti passaggi:
Passa alla directory con la configurazione di GKE su AWS. Hai creato questa directory durante la installazione del servizio di gestione.
cd anthos-aws
Scegli se hai creato il tuo ambiente GKE su AWS con lo strumento
anthos-gke
o se hai creato i tuoi profili IAM AWS manualmente.Strumento anthos-gke
Utilizza il comando
terraform output
e cerca il valore diiamInstanceProfile
.terraform output | grep iamInstanceProfile
Se hai creato il tuo ambiente GKE su AWS con lo strumento
anthos- gke
, l'output sarà simile al seguente:iamInstanceProfile: gke-CLUSTER_ID-controlplane iamInstanceProfile: gke-CLUSTER_ID-nodepool
dove CLUSTER_ID è l'ID del cluster. Copia il valore di
gke-CLUSTER_ID-controlplane
per il passaggio successivo.Creato manualmente
Esamina l'output di
terraform output
con il seguente comando:terraform output | less
Scorri l'output e individua iamInstanceProfile dopo la definizione di AWSCluster.
kind: AWSCluster metadata: name: cluster-0 spec: ... controlPlane: ... iamInstanceProfile: INSTANCE_PROFILE_NAME
Copia il valore di
INSTANCE_PROFILE_NAME
per il passaggio successivo.Per concedere al control plane l'accesso ai volumi EBS, aggiungi il
gke-xxxxxx-controlplane
profilo IAM AWS come utente chiave alla chiave AWS KMS utilizzata per criptare il volume EBS.
Passaggi successivi
- Utilizza driver di archiviazione aggiuntivi con GKE su AWS.