Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
库伯内特斯+;MySQL:在Kubernetes容器中创建自定义数据库和用户_Mysql_Django_Docker_Kubernetes - Fatal编程技术网

库伯内特斯+;MySQL:在Kubernetes容器中创建自定义数据库和用户

库伯内特斯+;MySQL:在Kubernetes容器中创建自定义数据库和用户,mysql,django,docker,kubernetes,Mysql,Django,Docker,Kubernetes,我正在尝试使用Google容器引擎和Kubernetes创建一个Django+MySQL应用程序。根据官方MySQL docker image和Kubernetes文档中用于创建MySQL容器的文档,我创建了以下复制控制器 apiVersion: v1 kind: ReplicationController metadata: labels: name: mysql name: mysql spec: replicas: 1 template: metadata:

我正在尝试使用Google容器引擎和Kubernetes创建一个Django+MySQL应用程序。根据官方MySQL docker image和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\U数据库。MYSQL\u USER,MYSQL\u PASSWORD,将使用该密码创建一个新用户,并为新创建的数据库分配权限。但事实并非如此。当我SSH到该容器中时,设置了根密码。但既不创建用户,也不创建数据库

我通过在本地运行并像这样传递相同的环境变量来测试这一点

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日

应要求 @朱利安·杜波伊斯 磁盘已创建。它出现在云控制台中,当我运行descripe命令时,我得到以下输出

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>
命令:gcloud计算磁盘描述mysql磁盘
结果:
creationTimestamp:“2016-09-16T01:06:23.380-07:00”
id:'467361569104542160'
种类:计算#磁盘
最后附加时间戳:“2016-09-19T06:11:23.297-07:00”
时间戳:“2016-09-19T05:48:14.320-07:00”
名称:mysql磁盘
自链接:https://www.googleapis.com/compute/v1/projects//disks/mysql-disk
sizeGb:'20'
状态:就绪
类型:https://www.googleapis.com/compute/v1/projects//diskTypes/pd-standard
用户:
- https://www.googleapis.com/compute/v1/projects//instances/gke-cluster-1-default-pool-e0f09576-zvh5
区域:https://www.googleapis.com/compute/v1/projects/
我参考了很多教程和谷歌云的例子。要在本地运行mysql docker容器,我的主要参考是docker hub上的官方图像页面

这对我有效,并且在本地创建的容器有一个新的数据库和具有正确权限的用户

对于库伯内特斯,我的主要参考资料如下


我只是想用Django容器连接到它

您在部署中设置了mysql磁盘,并且您拥有的磁盘是自定义磁盘。将pdName更改为自定义磁盘,它就会工作。

当我使用卷并将它们装载到mysql播客时,我也面临同样的问题

如以下文件所述:

启动mysql映像时,可以通过在docker run命令行上传递一个或多个环境变量来调整mysql实例的配置请注意,如果使用已包含数据库的数据目录启动容器,则以下变量都不会产生任何影响:在容器启动时,任何预先存在的数据库都将始终保持不变。

因此,在旋转轮子之后,我设法通过将我正在创建的卷的主机路径从“/data/mysql pv volume”更改为“/var/lib/mysql”来解决这个问题

下面是可能有助于创建卷的代码片段

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv-volume
  labels:
    type: local
spec:
  persistentVolumeReclaimPolicy: Delete /* For development Purposes only */
  storageClassName: manual
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/var/lib/mysql"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

希望有帮助。

您的磁盘是在GCE上创建的吗?你能显示日志输出吗?你能链接到你所指的文档吗?@JulienDuBois和Anirudh Ramanathan。我已根据要求对问题进行了编辑,并提供了更多详细信息。如果还需要什么,请告诉我。目前,我已经将SSHed放入容器中,并创建了继续开发所需的用户和数据库。一旦我想部署用于生产,我仍然需要一种方法来自动化此过程。您是否能够运行此过程?我也面临同样的问题我真的很抱歉。这是我的错。我正在编辑姓名,因为我不确定在公共平台上发布时必须保护多少信息。我会改变的。但是磁盘名是正确的。正如我在问题中提到的,我进入了那个容器,创建了DB,然后将Django与之连接起来,它工作得很好。但是当我创建pod时,db并没有被创建。