Panoramica
Se hai già un volume AWS Elastic Block Store (EBS) da importare nei cluster Anthos su AWS, puoi creare un oggetto PersistentVolume (PV) e riservarlo per uno specifico PersistentVolumeClaim (PVC).
Questa pagina spiega come creare un volume permanente utilizzando un volume EBS esistente compilato con i dati e come utilizzare il volume permanente in un pod.
Prima di iniziare
- Dalla directory
anthos-aws
, utilizzaanthos-gke
per cambiare il contesto del cluster utente.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
Sostituisci CLUSTER_NAME con il tuo nome cluster utente.
Creazione di un PersistentVolume per un volume EBS esistente
Puoi importare un volume EBS esistente specificando un nuovo volume permanente.
Copia il seguente file YAML in un file denominato
existing-volume.yaml
e completa la configurazione sostituendo i valori:- volume-capacity: 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 di StorageClass che fornisce il provisioning del volume. Ad esempio, puoi utilizzare l'
standard-rwo
predefinito.ebs-id: ID volume di 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: dimensione del volume. Ad esempio,
YAML applicati al cluster
kubectl apply -f existing-volume.yaml
Conferma la creazione del tuo volume permanente
kubectl describe pv volume-name
L'output di questo comando contiene lo stato del volume permanente.
Utilizzo del volume con un PersistentVolumeClaim e un pod
Dopo aver importato il volume, puoi creare un PVC e un pod che colleghino il PVC.
Il codice YAML seguente 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 di StorageClass dal
PersistentVolume creato in precedenza. Ad esempio,
standard-rwo
. - volume-name: il nome del volume che hai creato in precedenza.
- volume-capacity: 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
YAML applicati al cluster
kubectl apply -f nginx.yaml
Controlla lo stato della tua istanza di Nginx con
kubectl describe
. L'output deve avere unSTATUS
diRunning
.kubectl describe pod web-server
Utilizzo di volumi EBS criptati
Se il tuo volume EBS è criptato con AWS Key Management Service (KMS), devi concedere all'accesso IAM dei ruoli del piano di controllo AWS sul piano di controllo AWS la chiave KMS.
Per ottenere il nome del ruolo IAM di AWS, segui questi passaggi:
Passa alla directory con i cluster Anthos sulla configurazione di AWS. Hai creato questa directory durante la installazione del servizio di gestione.
cd anthos-aws
Scegli se hai creato i cluster Anthos in ambiente AWS con lo strumento
anthos-gke
o se hai creato manualmente i profili AWS IAM.strumento anthos-gke
Usa il comando
terraform output
e cerca il valore diiamInstanceProfile
.terraform output | grep iamInstanceProfile
Se hai creato i cluster Anthos in ambiente AWS con lo strumento
anthos- gke
, l'output avrà il seguente aspetto: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 comando seguente:terraform output | less
Scorri l'output e cerca il parametro 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 seguente passaggio.Per concedere al piano di controllo l'accesso ai volumi EBS, aggiungi il profilo IAM AWS
gke-xxxxxx-controlplane
come utente chiave alla chiave KMS AWS utilizzata per criptare il volume EBS.
Passaggi successivi
- Utilizza driver di archiviazione aggiuntivi con cluster Anthos su AWS.