Kubernetes InnoDBCluster: ¿todos los pods deberían compartir un PersistentVolumeClaim?

Kubernetes InnoDBCluster: ¿todos los pods deberían compartir un PersistentVolumeClaim?

Kubernetes InnoDBCluster: ¿todos los pods deberían compartir un PersistentVolumeClaim?

Siguiente:https://dev.mysql.com/doc/mysql-operator/en/mysql-operator-innodbcluster-simple-kubectl.html

kubectl create namespace mysql-cluster-test
kubectl create secret generic mypwds \
  --from-literal=rootUser=root \
  --from-literal=rootHost=% \
  --from-literal=rootPassword=123456 -n mysql-cluster-test
kubectl apply -f mycluster.yaml -n mysql-cluster-test

Kubectl obtiene pods -n mysql-cluster-test

NAME                                READY   STATUS    RESTARTS   AGE
mycluster-0                         2/2     Running   0          12m
mycluster-1                         2/2     Running   0          12m
mycluster-2                         2/2     Running   0          12m
mycluster-router-5d87fbd754-zhsrh   1/1     Running   0          10m

kubectl obtiene pvc -n mysql-cluster-test

NAME                  STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
datadir-mycluster-0   Bound    pvc-b3bf5f24-99d0-4497-bd34-fd91eb4adc6c   2Gi        RWO            hostpath       8m9s
datadir-mycluster-1   Bound    pvc-1c042c50-bc3f-43f8-8e16-094042495e6d   2Gi        RWO            hostpath       8m9s
datadir-mycluster-2   Bound    pvc-85fbf9f9-d975-4899-a292-d247644cb2d2   2Gi        RWO            hostpath       8m9s

Hay 3 POD mysql, cada uno de los cuales tiene su propio PVC y está vinculado a diferentes volúmenes. Los datos de MySQL deben almacenarse en un volumen. ¿Todos los POD deberían compartir un PVC?

Respuesta1

Hay 3 POD mysql, cada uno de los cuales tiene su propio PVC y está vinculado a diferentes volúmenes. Los datos de MySQL deben almacenarse en un volumen. ¿Todos los POD deberían compartir un PVC?

MySQL (y otras bases de datos SQL) no están diseñadas para funcionar con almacenamiento compartido. Si desea más de una instancia, cada instancia necesita su propio almacenamiento dedicado. En una configuración de clúster, cada instancia utiliza alguna forma de replicación para mantener actualizada su copia local con otros miembros del clúster.

Generalmente esto es lo que usted desea, incluso sipodríaSi utiliza un único PV compartido, perder el PV significaría que perdería todos sus datos. Al utilizar la replicación, otra instancia del clúster puede asumir la función principal (o puede continuar proporcionando acceso si tiene varias réplicas de lectura/escritura).

podríause un solo volumen y luego use un directorio separado para cada instancia, pero como se señaló anteriormente, eso hace que su almacenamiento sea un único punto de falla (y también un único punto de contención de E/S).

¿Se eliminará el almacenamiento local cuando se elimine un pod?

Si está utilizando almacenamiento efímero para la base de datos, entonces sí. Si coloca la base de datos almacenada en un (no-compartido) PV, entonces no. Usar un fotovoltaico para almacenamiento suele ser el mejor plan; en el caso de un reinicio del Pod (como al actualizar versiones) que minimiza la cantidad de datos que deben transferirse para resincronizar la réplica.

información relacionada