mysql - Kubernetes 将 mysql 数据库的数据保存在卷中

标签 mysql spring-boot kubernetes minikube persistent-volumes

我是 kubernetes 新手(使用 minikube),我想部署一个使用 mysql 存储数据的 springboot 应用程序。

我正在一个有 2 个容器的 pod 中运行我的应用程序(一个用于我的应用程序,一个用于 mysql),它工作正常并且正如预期的那样,一旦我重新启动 pods(使用规模 --replicas= 0;例如scale --replicas=1)。

我正在使用 PersistentVolumeClaim,但数据仍然没有存储,我肯定错过了一些重要的东西。

这是我的配置文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: esse-deployment-1
  labels:
    app: esse-1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: esse-1
  template:
    metadata:
      labels:
        app: esse-1
    spec:
      containers:
      - image: mysql:5.7
        name: esse-datasource
        ports:
        - containerPort: 3306
        env: 
        - name: MYSQL_ROOT_PASSWORD
          value: root 
        volumeMounts:
        - name: mysql-persistent-storage-esse-1
          mountPath: /home/esse-1/data/mysql
      - image: esse-application
        name: esse-app
        imagePullPolicy: Never
        ports:
        - containerPort: 8080
        env:
        - name: ESSE_DATABASE_USERNAME
          value: root
        - name: ESSE_DATABASE_PASSWORD
          value: root
        - name: ESSE_APPLICATION_CONTEXT
          value: /esse-1
      volumes:
        - name: mysql-persistent-storage-esse-1
          persistentVolumeClaim:
            claimName: mysql-persistent-volume-claim-esse-1

---

apiVersion: v1
kind: Service
metadata:
  name: esse-service-1
  labels:
    app: esse-1
spec:
  selector:
    app: esse-1
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 8080
  type: NodePort

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-persistent-volume-claim-esse-1
  labels:
    app: esse-1
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

最佳答案

您需要将持久卷挂载到mysql实际写入数据库数据的目录(调整容器的mountPath)。在本例中,这是 /var/lib/mysql

关于mysql - Kubernetes 将 mysql 数据库的数据保存在卷中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57349753/

相关文章:

mysql - 让 Ruby 和 MySQL 协同工作

php - utf8 编码在 php 中无法正常工作

Kubernetes API - 获取特定节点上的 Pod

java - 在当前项目和插件组中找不到前缀 'spring' 的插件

spring-boot - @PathVariable 根本不起作用

azure - Azure Kubernetes 服务的 nginx-ingress Controller 502 错误网关

kubernetes - 是否可以对 Pod 实现硬内存限制?

PHP/MySQL - 从实际 gps 坐标查找 500 米半径内的所有项目

php - mySQL查询昨天的最大时间戳

spring - java.lang.ClassCastException : javax. xml.bind.JAXBElement 无法转换为