MySQL aufsetzen



  • Ich versuche eine persistente MySQL-Datenbank aufzusetzen. Dazu habe ich das Template mysql-persistent verwendet. Daraus wurde auch eine brauchbare DeploymentConfiguration erstellt:

    # Please edit the object below. Lines beginning with a '#' will be ignored,
    # and an empty file will abort the edit. If an error occurs while saving this file will be
    # reopened with the relevant failures.
    #
    
    apiVersion: v1
    kind: DeploymentConfig
    metadata:
      creationTimestamp: 2016-06-15T16:40:15Z
      labels:
        template: mysql-persistent-template
      name: mysql
      namespace: mapirium
      resourceVersion: "16742579"
      selfLink: /oapi/v1/namespaces/mapirium/deploymentconfigs/mysql
      uid: d62fddd1-3317-11e6-bc40-5254007aaba6
    spec:
      replicas: 1
      selector:
        name: mysql
      strategy:
        recreateParams: {}
        resources: {}
        type: Recreate
      template:
        metadata:
          creationTimestamp: null
          labels:
            name: mysql
        spec:
          containers:
          - env:
            - name: MYSQL_USER
              value: mapirium
            - name: MYSQL_PASSWORD
              value: ****
            - name: MYSQL_DATABASE
              value: mapirium
            image: mysql
            imagePullPolicy: IfNotPresent
            livenessProbe:
              initialDelaySeconds: 30
              tcpSocket:
                port: 3306
              timeoutSeconds: 1
            name: mysql
            ports:
            - containerPort: 3306
              protocol: TCP
            readinessProbe:
              exec:
                command:
                - /bin/sh
                - -i
                - -c
                - MYSQL_PWD="$MYSQL_PASSWORD" mysql -h 127.0.0.1 -u $MYSQL_USER -D $MYSQL_DATABASE
                  -e 'SELECT 1'
              initialDelaySeconds: 5
              timeoutSeconds: 1
            resources:
              limits:
                memory: 512Mi
            securityContext:
              capabilities: {}
              privileged: false
            terminationMessagePath: /dev/termination-log
            volumeMounts:
            - mountPath: /var/lib/mysql/data
              name: mysql-data
          dnsPolicy: ClusterFirst
          restartPolicy: Always
          securityContext: {}
          terminationGracePeriodSeconds: 30
          volumes:
          - name: mysql-data
            persistentVolumeClaim:
              claimName: mysql
      triggers:
      - imageChangeParams:
          automatic: true
          containerNames:
          - mysql
          from:
            kind: ImageStreamTag
            name: mysql:latest
            namespace: mapirium
        type: ImageChange
      - type: ConfigChange
    status:
      latestVersion: 2
    

    Beim Starten erscheinen allerdings folgende Fehler im Event-Log:

    • Unable to mount volumes for pod "mysql-3-mnto7_mapirium(a2eff9f8-33e7-11e6-a2cd-525400f6ccbc)": failed to instantiate volume builder for mysql-data: The claim mysql is not yet bound to a volume
    • Error syncing pod, skipping: failed to instantiate volume builder for mysql-data: The claim mysql is not yet bound to a volume

    Scheinbar braucht man für einen persistenten Mysql-Server ein spezielles Volume. Wie erhalte ich dieses?


  • APPUiO Staff

    Die Deployment Config alleine reicht da nicht aus. im Template (mysql-persistent) wird nebst dem Service und der DeploymentConfig auch eine Resource PersistentVolumeClaim (Name des DatabaseServices und Kapazität aus dem Template) erstellt:

    {
                "kind": "PersistentVolumeClaim",
                "apiVersion": "v1",
                "metadata": {
                    "name": "${DATABASE_SERVICE_NAME}"
                },
                "spec": {
                    "accessModes": [
                        "ReadWriteOnce"
                    ],
                    "resources": {
                        "requests": {
                            "storage": "${VOLUME_CAPACITY}"
                        }
                    }
                }
            }
    

    Im APPUiO Techlab 10 ist detailliert beschrieben, wie ein Persistent Volume Claim und ein PV an eine Mysql DB gehängt werden kann.
    https://github.com/appuio/techlab/blob/lab-3.2/labs/10_persistent_storage.md

    Mit dem Befehl

    $ oc volume dc/mysql --add --name=mysql-data --type pvc --claim-name=mysql --claim-size=256Mi --overwrite
    

    wird das PV und der PVC entsprechend erzeugt.


Log in to reply
 

Looks like your connection to APPUiO Discussion and Help Forum was lost, please wait while we try to reconnect.