我正在尝试使用Google容器引擎和Kubernetes创建一个Django + MySQL应用程序。遵循官方MySQL docker镜像的文档和Kubernetes文档来创建MySQL容器,我创建了以下复制控制器
apiVersion: v1
kind: ReplicationController
metadata:
labels:
name: mysql
name: mysql
spec:
replicas: 1
template:
metadata:
labels:
name: mysql
spec:
containers:
- image: mysql:5.6.33
name: mysql
env:
#Root password is compulsory
- name: "MYSQL_ROOT_PASSWORD"
value: "root_password"
- name: "MYSQL_DATABASE"
value: "custom_db"
- name: "MYSQL_USER"
value: "custom_user"
- name: "MYSQL_PASSWORD"
value: "custom_password"
ports:
- name: mysql
containerPort: 3306
volumeMounts:
# This name must match the volumes.name below.
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumes:
- name: mysql-persistent-storage
gcePersistentDisk:
# This disk must already exist.
pdName: mysql-disk
fsType: ext4
根据文档,传递环境变量MYSQL_DATABASE. MYSQL_USER, MYSQL_PASSWORD,将创建一个新用户并分配权限到新创建的数据库。但实际上并未发生这种情况。当我通过SSH进入容器时,ROOT密码已设置。但是既没有创建用户也没有创建数据库。
我已经进行了本地测试,并传递了相同的环境变量,如下所示:
docker run -d --name some-mysql \
-e MYSQL_USER="custom_user" \
-e MYSQL_DATABASE="custom_db" \
-e MYSQL_ROOT_PASSWORD="root_password" \
-e MYSQL_PASSWORD="custom_password" \
mysql
当我SSH进入该容器时,数据库和用户被创建,一切正常。
我不确定我做错了什么。有人能指出我的错误吗?我已经在这里忙了一整天。
编辑:2016年9月20日
如要求 @Julien Du Bois 磁盘已创建。它出现在云控制台中,当我运行描述命令时,我得到以下输出
Command : gcloud compute disks describe mysql-disk
Result:
creationTimestamp: '2016-09-16T01:06:23.380-07:00'
id: '4673615691045542160'
kind: compute#disk
lastAttachTimestamp: '2016-09-19T06:11:23.297-07:00'
lastDetachTimestamp: '2016-09-19T05:48:14.320-07:00'
name: mysql-disk
selfLink: https://www.googleapis.com/compute/v1/projects/<details-withheld-by-me>/disks/mysql-disk
sizeGb: '20'
status: READY
type: https://www.googleapis.com/compute/v1/projects/<details-withheld-by-me>/diskTypes/pd-standard
users:
- https://www.googleapis.com/compute/v1/projects/<details-withheld-by-me>/instances/gke-cluster-1-default-pool-e0f09576-zvh5
zone: https://www.googleapis.com/compute/v1/projects/<details-withheld-by-me>
我参考了许多教程和 Google Cloud 的示例。在本地运行 mysql docker 容器时,我主要参考了 Docker Hub 上的官方镜像页面 https://hub.docker.com/_/mysql/。
这对我来说是有效的,容器在本地创建了一个新的数据库和具有正确权限的用户。
对于 Kubernetes,我的主要参考资料是以下内容:https://cloud.google.com/container-engine/docs/tutorials/persistent-disk/。
我只是尝试使用 Django 容器连接到它。