Развертывание PV в MiniKube K8S

Я развертываю приложение с отслеживанием состояния в K8S.

Перед этим я пытаюсь реализовать пример.

Перед развертыванием my-sql в моем кластере я создал pv и pvc.

kind: PersistentVolume
apiVersion: v1
metadata:
  name: mysql-pv-volume
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi

На данный момент я не редактировал и не создавал никаких новых StorageClass.

Затем я перехожу к развертыванию приложения, используя volumeMount в моем развертывании.

.
.
       volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: mysql-pv-claim

Я успешно запускаю приложение и снимаю его (сначала модуль и развертывание), возвращаю приложение и замечаю, что данные моего приложения сохраняются в /var/lib/mysql.

Позже я заметил, что /mnt/data НЕ существует на моей главной машине. Я работаю в миникубе.

Я заглянул в класс хранилища, и, похоже, он использует:

StorageClass:    manual

Но если я проверю все свои классы хранения, я увижу только этот:

# kubectl describe storageclass
Name:            standard
IsDefaultClass:  Yes
Annotations:     kubectl.kubernetes.io/last-applied-configuration = {"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{"storageclass.beta.kubernetes.io/is-default-class":"true"},"labels":{"addonmanager.kubernetes.io/mode":"Reconcile"},"name":"standard","namespace":""},"provisioner":"k8s.io/minikube-hostpath"}
,storageclass.beta.kubernetes.io/is-default-class=true
Provisioner:           k8s.io/minikube-hostpath
Parameters:            <none>
AllowVolumeExpansion:  <unset>
MountOptions:          <none>
ReclaimPolicy:         Delete
VolumeBindingMode:     Immediate
Events:                <none>

Но того, что использует my-sql, нет.

Мне нужна помощь в понимании этого, пожалуйста. Где PV /mnt/data?

На моем хост-компьютере результат поиска /mnt/data следующий:

# cd /mnt/data
cd: no such file or directory: /mnt/data
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
3
0
1 318
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Minikube - это универсальное решение на основе виртуальной машины (ВМ). Итак, у вас есть один узел, на котором живет вся плоскость управления, а также это ваш единственный рабочий узел:

$ kubectl get node
NAME       STATUS  ROLES   AGE  VERSION 
minikube   Ready   master  1d   v1.10.0

Теперь это один узел, виртуальная машина, на которой размещен ваш кластер Kubernetes. Таким образом, все действия, связанные с хостом, должны выполняться на указанной виртуальной машине:

$ minikube ssh
                         _             _
            _         _ ( )           ( )
  ___ ___  (_)  ___  (_)| |/')  _   _ | |_      __
/' _ ` _ `\| |/' _ `\| || , <  ( ) ( )| '_`\  /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )(  ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)

$ ls -al /mnt
total 4
drwxr-xr-x  3 root root   60 Sep  8 12:38 .
drwxr-xr-x 17 root root  460 Sep  8 12:38 ..
drwxr-xr-x  7 root root 4096 Sep  8 12:38 vda1

И вот у вас есть ваша директория /mnt.

Другие вопросы по теме