
Kubernetes InnoDBCluster: todos os pods devem compartilhar um PersistentVolumeClaim?
Seguindo: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 obtém 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 obtém 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
Existem 3 PODs mysql, cada um com seu próprio PVC e vinculado a volumes diferentes. Os dados MySQL precisam ser armazenados em um volume. Todos os PODs deveriam compartilhar um PVC?
Responder1
Existem 3 PODs mysql, cada um com seu próprio PVC e vinculado a volumes diferentes. Os dados MySQL precisam ser armazenados em um volume. Todos os PODs deveriam compartilhar um PVC?
MySQL (e outros bancos de dados SQL) não foram criados para operar com armazenamento compartilhado. Se você quiser mais de uma instância, cada instância precisará de seu próprio armazenamento dedicado. Em uma configuração de cluster, cada instância usa alguma forma de replicação para manter sua cópia local atualizada com outros membros do cluster.
Geralmente é isso que você deseja - mesmo se vocêpoderiaSe você usar um único PV compartilhado, perder o PV significaria que você perderia todos os seus dados. Ao usar a replicação, outra instância no cluster pode assumir a função primária (ou pode continuar fornecendo acesso se você tiver várias réplicas de leitura/gravação).
Vocêpoderiause um único volume e, em seguida, use um diretório separado para cada instância, mas como observado anteriormente, isso torna seu armazenamento um ponto único de falha (e também um ponto único de contenção de E/S).
O armazenamento local será excluído quando um pod for excluído?
Se você estiver usando armazenamento efêmero para o banco de dados, sim. Se você colocar o banco de dados armazenado em um (não-compartilhado) PV, então não. Usar um PV para armazenamento geralmente é o melhor plano; no caso de uma reinicialização do pod (como ao atualizar versões) que minimiza a quantidade de dados que precisam ser transferidos para ressincronizar a réplica.