How to Install Mysql in Kubernetes with GCE

10/31/2017

I have tried multiple times to install Mysql with kubernetes 1.8 in Google Container Engine by following the tutorial from Kubernetes Page. The PV, PVC and the Service are created succesfully, but the POD is always giving me error

PersistentVolumeClaim is not bound: "mysql-pv-claim" (repeated 3 times)

When I run kubectl get pvc it is bounded successfully. I don't know where did I wrong

Here is my deployment.yaml

apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:
  - port: 3306
selector:
  app: mysql
clusterIP: None
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
 ---
apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: mysql
spec:
 selector:
   matchLabels:
     app: mysql
 strategy:
   type: Recreate
 template:
   metadata:
     labels:
       app: mysql
   spec:
    containers:
    - image: mysql:5.6
      name: mysql
      env:
      - name: MYSQL_ROOT_PASSWORD
        valueFrom:
          secretKeyRef:
            name: mysql
            key: password
      ports:
      - containerPort: 3306
        name: mysql
      volumeMounts:
      - name: mysql-persistent-storage
        mountPath: /var/lib/mysql
     volumes:
     - name: mysql-persistent-storage
       persistentVolumeClaim:
         claimName: mysql-pv-claim
-- Mohamad Nasir
google-kubernetes-engine
kubernetes
mysql

2 Answers

10/31/2017

From the docs you linked:

You need to either have a dynamic PersistentVolume provisioner with a default StorageClass, or statically provision PersistentVolumes yourself to satisfy the PersistentVolumeClaims used here.

You need to define a default StorageClass for GCE. Something like:

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: slow
provisioner: kubernetes.io/gce-pd
parameters:
  type: pd-standard
  zones: us-central1-a, us-central1-b
-- vascop
Source: StackOverflow

10/31/2017

I just find out that the problem was because the nodes that I used.

I used 3 micro-type server and it failed to give resources to mysql instance and when I upgrade it small or to normal server It works as it should.

-- Mohamad Nasir
Source: StackOverflow