Сохранение данных для модуля MySQL с использованием постоянного тома посредством перезапуска кластера

Я пытаюсь развернуть развертывание MySQL в Kubernetes и хочу сохранить данные. В настоящее время я могу сохранять данные в течение всего жизненного цикла модуля (удаление kubectl, а затем создание kubectl). Однако я не могу сохранить данные при перезапуске кластера. Есть идеи, почему это так?

persistent-volume.yml

apiVersion: v1
kind: PersistentVolume
metadata:
 name: mysql-pv-volume
spec:
 storageClassName: hostpath
 persistentVolumeReclaimPolicy: Retain
 capacity:
  storage: 100Mi
 accessModes:
  - ReadWriteOnce
 hostPath:
  path: "/mnt/data"

постоянный-объем-претензия.yml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
 name: mysql-pv-claim
spec:
 storageClassName: hostpath
 accessModes:
  - ReadWriteOnce
 resources:
  requests:
   storage: 100Mi

mysql-deployment.yml

kind: StatefulSet
metadata:
  name: powerplus-db
spec:
  serviceName: powerplus-db
  selector:
    matchLabels:
      app: powerplus-db
  template:
    metadata:
      labels:
        app: powerplus-db
    spec:
      containers:
        - name: powerplus-db
          image: mysql:8.0.21
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: password
            - name: MYSQL_DATABASE
              value: powerplus
          ports:
            - containerPort: 3306
              name: powerplus-db
          volumeMounts:
            - mountPath: /var/lib/mysql
              name: mysql-persistent-storage
      volumes:
        - name: mysql-persistent-storage
          persistentVolumeClaim:
            claimName: mysql-pv-claim```

person WeiTang Lau    schedule 16.10.2020    source источник
comment
Какие кубернеты вы используете? как перезапустить свой кластер   -  person Matt    schedule 17.10.2020
comment
@Matt Я использую Docker Desktop для кластера Kubernetes в Windows. Я просто перезапускаю приложение.   -  person WeiTang Lau    schedule 17.10.2020


Ответы (1)


Этот случай хорошо описан в этом официальном руководстве , особенно в параграфе, посвященном Create PersistentVolumeClaims и PersistentVolumes:

Предупреждение: в локальных кластерах по умолчанию StorageClass использует hostPath Provider. hostPath тома подходят только для разработки и тестирования. С hostPath томами ваши данные находятся в /tmp на узле, на который запланирован Pod, и не перемещаются между узлами. Если Pod умирает и переходит к другому узлу в кластере, или этот узел перезагружается, данные теряются.

HostPath используется только для тестирования одного узла. Вы можете использовать другой тип PersisstentVolume. Более подробную информацию о типах PersistentVolumes можно найти здесь < / а>.

person Wytrzymały Wiktor    schedule 19.10.2020