Tengo un pod que requiere un disco persistente. Tengo 1 pod ejecutándose en us-central1-a y si esa zona falla, quiero migrar a otra zona sin pérdida de datos a otra zona (us-central1-*).
¿Es posible migrar un pod a otra zona (donde sé que existen los discos) y usar el disco regional para el pod en la nueva zona?
Enfoque 1
Usando el StorageClass a continuación, mi pod nunca puede reclamar ninguno de estos y mi pod nunca se inicia. Entendí que este disco regional con todas las zonas configuradas haría que el disco estuviera disponible para todas las zonas en caso de falla de zona. No entiendo por qué no puedo reclamar ninguno de estos.
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: regionalpd-storageclass provisioner: kubernetes.io/gce-pd parameters: type: pd-standard replication-type: regional-pd volumeBindingMode: WaitForFirstConsumer allowedTopologies: - matchLabelExpressions: - key: topology.kubernetes.io/zone values: - us-central1-a - us-central1-b - us-central1-c - us-central1-fError: Mi estado de PVC siempre está pendiente
Normal NotTriggerScaleUp 106s cluster-autoscaler pod didn't trigger scale-up (it wouldn't fit if a new node is added): Warning FailedScheduling 62s (x2 over 108s) default-scheduler 0/8 nodes are available: 8 node(s) didn't find available persistent volumes to bind.Intento 2
Esta configuración de almacenamiento me permitirá ejecutar mi pod en 2/4 zonas, siendo 1 zona la zona inicial y 1 aleatoria. Cuando reduzco y salgo intencionalmente de mi zona de pods inicial, obtendré el siguiente error a menos que tenga la suerte de haber elegido la otra zona aprovisionada aleatoriamente. ¿Esta funcionalidad es intencional porque Google asume una posibilidad muy baja de fallas en 2 zonas? Si uno falla, ¿no tendría que aprovisionar otro disco en otra zona por si acaso?
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: regionalpd-storageclass provisioner: kubernetes.io/gce-pd parameters: type: pd-standard replication-type: regional-pd volumeBindingMode: WaitForFirstConsumerErrores:
Normal NotTriggerScaleUp 4m49s cluster-autoscaler pod didn't trigger scale-up (it wouldn't fit if a new node is added): Warning FailedScheduling 103s (x13 over 4m51s) default-scheduler 0/4 nodes are available: 2 node(s) had volume node affinity conflict, 2 node(s) were unschedulable. Warning FailedScheduling 43s (x2 over 43s) default-scheduler 0/3 nodes are available: 1 node(s) were unschedulable, 2 node(s) had volume node affinity conflict. Warning FailedScheduling 18s (x3 over 41s) default-scheduler 0/2 nodes are available: 2 node(s) had volume node affinity conflict.mi pvc
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: my-pvc namespace: mynamespace spec: accessModes: - ReadWriteOnce resources: requests: storage: 200Gi storageClassName: regionalpd-storageclassVolumen de mi Pod
volúmenes:
- name: console-persistent-volume persistentVolumeClaim: claimName: my-pvcUn disco persistente regional en Google Cloud solo está disponible en dos zonas , por lo que debe cambiar su StorageClass a solo dos zonas.
Consulte el ejemplo de StorageClass sobre el uso de Kubernetes Engine para implementar aplicaciones con discos persistentes regionales y más detalles sobre GKE: aprovisionamiento de discos persistentes regionales.