Назад | Перейти на главную страницу

minikube: использование класса хранилища для предоставления данных вне / tmp

Абсолютный новичок minikube / kubernetes здесь.

Я использую minikube с vm-driver = none (в случае, если это имеет значение) для развертывания приложения, которое дает мне возможность указать storageClass для предоставления томов, и оно по умолчанию использует «стандартный» storageClass.

Это РАБОТАЕТ, но это означает, что все данные, созданные в приложении, попадают в /tmp//tmp/hostpath_pv папка, я полагаю).

Это вызывает у меня зуд. Я понимаю, что сам minikube сохранит эти данные на миникубе перезапустите, но я боюсь потерять данные при обычной очистке linux /tmp папка.

Я хотел бы иметь возможность создать новый storageClass (поскольку это единственный легко настраиваемый вариант, с которым мне приходится работать в конфигурации YAML приложений), который заставляет minikube вставлять постоянные тома в /data каталог (или в любом другом месте, которое не будет автоматически очищаться ОС).

Есть простой способ сделать это? Или вообще проблема в том, что мои тома /tmp?

Извините за полную чушь. Я ценю вашу помощь.

С приложениями с отслеживанием состояния, такими как базы данных, мы хотим иметь тома, в которых хранятся данные за пределами жизненного цикла модуля. Kubernetes решает эту проблему, вводя ресурсы PersistentVolume и PersistentVolumeClaim, которые включают собственное и внешнее постоянное хранилище в ваших кластерах Kubernetes. С помощью minikube вы можете добиться этого, используя hostPath как PersistentVolume. Предположим, вы хотите иметь серверную часть MongoDB. Заявление о том, чтобы сделать этот том доступным для MongoDB.

mongodb-pv.yml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: data
spec:
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 5Gi
  hostPath:
    path: /data/mongoData

Теперь вам нужно создать локальный каталог для хранения:

$ mkdir -p /data/mongoData
$ chmod 777 /data/mongoData

Затем вам нужно создать постоянное требование тома. В случае утверждения постоянного тома вы отправляете запрос на привязку соответствующего постоянного тома.

mongodb-pv-claim.yml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: data-claim
spec:
  storageClassName: ""
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi

mongodb-deploy.yml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: mongodb
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: db
    spec:
      restartPolicy: Always
      volumes:
        - name: data-storage
          persistentVolumeClaim:
            claimName: data-claim
      containers:
        - name: mongodb-container
          image: "de13/mongo-myapp"
          volumeMounts:
            - name: data-storage
              mountPath: /var/lib/mongo
          ports:
            - containerPort: 27017

Примените файлы:

$ kubectl apply -f mongodb-pv.yml
$ kubectl apply -f mongodb-pv-claim.yml
$ kubectl apply -f mongodb-deploy.yml

$ kubectl get pvc
NAME         STATUS    VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS       AGE
data-claim   Bound     data      5Gi        RWO                               20s   <unset>

Мы уже можем видеть, что требование выполнено (связано) и что оно связано с недавно созданным томом с именем «data».

Вы можете проверить этот учебник и Документация Kubernetes если вы хотите узнать больше о постоянном хранилище.