2016-09-19 55 views
1

我正在嘗試使用Google Container Engine和Kubernetes創建一個Django + MySQL應用程序。以下來自官方的MySQL碼頭工人形象和Kubernetes文檔的文檔創建我創建了以下複製控制器Kubernetes + MySQL:在Kubernetes容器中創建自定義數據庫和用戶

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的容器中,通過環境變量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到該容器中測試了這個,數據庫和用戶在創建和一切工作正常。

我不知道我在做什麼錯在這裏。任何人都可以指出我的錯誤。我一直在這一整天。

編輯:20-七重峯-2016

的要求 @Julien杜波伊斯 創建的盤。它出現在雲控制檯中,當我運行describe命令時,我得到以下輸出

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> 

我提到了很多教程和谷歌雲示例。要在本地運行mysql docker容器,我的主要參考是docker hub上的官方圖像頁面 https://hub.docker.com/_/mysql/

這對我和本地工作的容器創建了一個新的數據庫和具有正確權限的用戶。

對於kubernetes,我主要參照以下

https://cloud.google.com/container-engine/docs/tutorials/persistent-disk/

我只是想使用Django容器連接到它。

+0

您是否在GCE上創建了磁盤?你可以顯示日誌輸出嗎? –

+0

你能鏈接到你指的文檔嗎? –

+0

@JulienDuBois和Anirudh Ramanathan。我已根據要求編輯了更多細節問題。請讓我知道是否需要其他東西。目前我已經SSH進入容器並創建了所需的用戶和數據庫來繼續開發。一旦我想部署生產,我仍然需要一種方法來自動執行此過程。 – Cognoscis

回答

0

您在部署中設置了mysql磁盤,並且您擁有的磁盤是自定義磁盤。將pdName更改爲自定義磁盤,它將起作用。

+0

我真的很抱歉。這是我的錯誤。我正在編輯這些名稱,因爲我不確定在公共平臺上發佈時我必須保護多少信息。我會改變這一點。但是磁盤名稱是正確的。正如我在問題中提到的,我進入該容器,創建了數據庫,然後將它與Django連接起來,並且工作正常。但是當我創建pod時,db沒有被創建。 – Cognoscis