Абсолютный новичок 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 если вы хотите узнать больше о постоянном хранилище.