如何编辑在kubernetes mysql容器中存在的my.cnf文件?



我在pod中创建了mysql容器,并将挂载路径设置为/var/lib/mysql当我尝试创建容器时,这个mountPath低于错误。

2022-12-16T07:13:59.139528Z 0 [ERROR] [MY-010457] [Server]——初始化指定,但数据目录中有文件。流产。

2022-12- 16t07:13:59 . 139537z0 [ERROR] [MY-013236] [Server]指定的数据目录/var/lib/mysql/不可用。您可以删除服务器添加到它的所有文件。

所以我决定改变my.cnf中的数据目录路径,给它一个空文件夹,如/var/lib/dbmysql .

但是我不能改变mysql容器中的my.cnf文件。

我遵循的步骤:

  1. kubectl exec -i -t pod-name—container-name—/bin/bash

  2. 在bash中尝试使用

    更改文件a) $ cat>/etc/my.cnf

    bash: /etc/my.cnf: Permission denied
    
    b) vim/etc/my.cnf
    bash: vim: command not found
    

nano和vi相同

c)也尝试使用apt-get和apk更新安装vim,但没有找到相同的错误命令

请引导我!!

一种可能是改变卷路径/var/lib/mysql,如果你想使用相同的路径,那么你也可以尝试下面推荐的方法。

要在Kubernetes中使用PV和Deployment运行单实例有状态MySQL应用程序,请参考运行单实例有状态应用程序。

尝试再次部署所有内容,并检查您正在使用的MySQL映像是否没有任何问题,并且首先没有PVC运行。

例如,这个YAML文件描述了一个运行MySQL并引用PVC的部署。该文件为/var/lib/mysql定义了一个卷挂载,然后创建一个查找20G卷的PVC。此声明由任何满足要求的现有卷或动态提供者满足。

在应用之前,更新必要的更改,如MySQL的映像。

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

And Deployment &服务像…

apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
ports:
- port: 3306
selector:
app: mysql
clusterIP: None
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
spec:
selector:
matchLabels:
app: mysql
strategy:
type: Recreate
template:
metadata:
labels:
app: mysql
spec:
containers:
- image: mysql:5.6
name: mysql
env:
# Use secret in real usage
- name: MYSQL_ROOT_PASSWORD
value: password
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-pv-claim

相关内容

最新更新