在 Kubernetes 中,要将 MySQL 挂载到某个目录下,可以通过 YAML 文件来实现。具体步骤如下:
- 创建一个 PVC(Persistent Volume Claim),用于声明需要挂载的存储卷。例如,创建一个名为 mysql-pvc 的 PVC:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
其中,accessModes 表示访问模式,这里采用 ReadWriteOnce,即只能被单个节点以读写方式挂载。resources.requests.storage 表示需要申请的存储空间大小。
- 创建一个 Deployment,用于部署 MySQL 实例。在 spec.template.spec.containers.volumeMounts 中设置挂载的目标路径,例如 /var/lib/mysql:
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
spec:
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:5.7
env:
- name: MYSQL_ROOT_PASSWORD
value: password
ports:
- containerPort: 3306
volumeMounts:
- name: mysql-data
mountPath: /var/lib/mysql
volumes:
- name: mysql-data
persistentVolumeClaim:
claimName: mysql-pvc
其中,volumes 定义了挂载的卷,name 表示卷名称,persistentVolumeClaim.claimName 表示使用的 PVC 名称。containers.volumeMounts 定义了容器内部挂载的目录,name 表示卷名称,mountPath 表示目标路径。
- 应用 YAML 文件:
kubectl apply -f mysql.yaml
- 查看 Pod 信息:
kubectl get pod
可以看到 MySQL 的 Pod 已经处于运行状态。
- 连接 MySQL 数据库:
在应用程序中,使用以下命令连接 MySQL 数据库:
mysql -h <service-name> -u root -p
其中,service-name 是 Kubernetes 中定义的 Service 名称。这样就可以访问 MySQL 数据库,并将数据存储在已挂载的目录下。