非常抱歉,可能是我在编写示例时出现了一些错误。以下是更新后的YAML文件:
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-config
data:
my.cnf: |
[mysqld]
bind-address=0.0.0.0
---
apiVersion: v1
kind: Secret
metadata:
name: mysql-secrets
type: Opaque
data:
MYSQL_ROOT_PASSWORD: cGFzc3dvcmQxMjM=
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-deployment
spec:
selector:
matchLabels:
app: mysql
replicas: 1 #设置副本数量为1,可以根据需求调整
template:
metadata:
labels:
app: mysql
spec:
containers:
- name : mysql-container # 容器名称为mysql-container,可以自定义修改成你想要的名字。
image : mysql # 使用 MySQL 镜像
envFrom :
- configMapRef :
name : mysql-config # 引用上面定义的 ConfigMap
- secretRef :
name : mysql-secrets # 引用上面定义的 Secret 对象获取密码。
ports :
- containerPort : 3306 # 暴露容器端口号为3306,外部应用程序可以通过此端口访问MySQL服务。
volumeMounts :
- mountPath : /etc/mysql/my.cnf
subPath : my.cnf
name : config-volume
- mountPath : /var/lib/mysql
name : data-volume
volumes :
- name : config-volume
configMap :
name : mysql-config
- name : data-volume
persistentVolumeClaim :
claimName : pvc-mysql
---
apiVersion : v1
kind : Service
metadata :
name : mysql-service
spec :
selector :
app : mysql
ports :
- protocol : TCP
port : 3306
targetPort : 3306
type : ClusterIP
在上面的配置文件中,我们创建了一个ConfigMap对象 mysql-config 来指定 my.cnf 配置文件,并创建了一个Secret对象 mysql-secrets 来存储MySQL密码。注意,在此示例中,我们将明文密码转换为Base64编码后存储在Secret对象中。
然后我们定义了一个Deployment对象 mysql-deployment 来部署MySQL服务,并使用上面创建的 ConfigMap 对象和 Secret 对象来设置环境变量和挂载 my.cnf 配置文件到容器中。
最后,我们还定义了一个Service对象 mysql-service 来暴露MySQL服务,使得其他应用程序可以通过该服务访问MySQL服务。
请注意,在此示例中使用了Persistent Volume Claim (PVC)来为MySQL提供持久化存储。如果您没有提前创建PVC,则需要将其添加到配置文件中以确保它可用。
希望这个更新后的示例能够解决你遇到的问题。




