GoogleCloudPlatform / mysql-docker

GNU General Public License v2.0
24 stars 22 forks source link

Mysql container crash when deploying on K8S. #62

Closed ujala-singh closed 4 years ago

ujala-singh commented 4 years ago

Hi,

I'm trying to deploy this image with the following kubernetes files :

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv-volume
  labels:
    app: mysql
spec:
  storageClassName: manual
  capacity:
    storage: 4Gi
  accessModes:
    - ReadWriteMany
  hostPath:
    path: "/mnt/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
  labels:
    app: mysql
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 4Gi
---

apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:
  - port: 3306
  selector:
    app: mysql
  clusterIP: None
---
apiVersion: apps/v1 
kind: Deployment
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - image: jolly3/mydb
        name: mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "password"
        - name: MYSQL_DATABASE
          value: "wpdb"
        - name: MYSQL_USER
          value: "user"
        - name: MYSQL_PASSWORD
          value: "mypswd"
        ports:
        - containerPort: 3306
          name: mysql
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: "/var/lib/mysql"
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: mysql-pv-claim
armandomiani commented 4 years ago

Hello @ujala-singh ,

Can you also please send me the logs:

POD_NAME="your-pod-name-here"
kubectl describe "pod/${POD_NAME}"
kubectl logs  "${POD_NAME}"
ujala-singh commented 4 years ago

Hello @armandomiani ,

➜  K8S Deployment git:(master) ✗ kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
mysql-6bd7b7cf99-lwlt5   1/1     Running   1          77s
➜  K8S Deployment git:(master) ✗ kubectl describe pod/mysql-6bd7b7cf99-lwlt5
Name:         mysql-6bd7b7cf99-lwlt5
Namespace:    default
Priority:     0
Node:         minikube/192.168.64.2
Start Time:   Mon, 27 Apr 2020 16:06:45 +0530
Labels:       app=mysql
              pod-template-hash=6bd7b7cf99
Annotations:  <none>
Status:       Running
IP:           172.17.0.8
IPs:
  IP:           172.17.0.8
Controlled By:  ReplicaSet/mysql-6bd7b7cf99
Containers:
  mysql:
    Container ID:   docker://173e48f67841355a3ad96c2ddd6ec0e1f115fa1e22ba2be2ba0b540c4d2649fc
    Image:          jolly3/mydb
    Image ID:       docker-pullable://jolly3/mydb@sha256:dc1aefcb43a23b5bd7148e55c27270b7eeac36dfd5cc41b7b8ad2bf671c9a221
    Port:           3306/TCP
    Host Port:      0/TCP
    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       Error
      Exit Code:    1
      Started:      Mon, 27 Apr 2020 16:08:28 +0530
      Finished:     Mon, 27 Apr 2020 16:08:59 +0530
    Ready:          False
    Restart Count:  2
    Environment:
      MYSQL_ROOT_PASSWORD:  password
      MYSQL_DATABASE:       wpdb
      MYSQL_USER:           user
      MYSQL_PASSWORD:       mypswd
    Mounts:
      /var/lib/mysql from mysql-persistent-storage (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-8jwh9 (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             False 
  ContainersReady   False 
  PodScheduled      True 
Volumes:
  mysql-persistent-storage:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  mysql-pv-claim
    ReadOnly:   false
  default-token-8jwh9:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-8jwh9
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason     Age                  From               Message
  ----     ------     ----                 ----               -------
  Normal   Scheduled  <unknown>            default-scheduler  Successfully assigned default/mysql-6bd7b7cf99-lwlt5 to minikube
  Normal   Pulled     64s (x3 over 2m42s)  kubelet, minikube  Successfully pulled image "jolly3/mydb"
  Normal   Created    64s (x3 over 2m42s)  kubelet, minikube  Created container mysql
  Normal   Started    64s (x3 over 2m41s)  kubelet, minikube  Started container mysql
  Warning  BackOff    20s (x3 over 86s)    kubelet, minikube  Back-off restarting failed container
  Normal   Pulling    6s (x4 over 2m46s)   kubelet, minikube  Pulling image "jolly3/mydb"
➜  K8S Deployment git:(master) ✗ kubectl logs -f pod/mysql-6bd7b7cf99-lwlt5
 * Starting MySQL database server mysqld
   ...fail!
armandomiani commented 4 years ago

Hello @ujala-singh ,

I could not complete all tests, but one thing that I would like you to investigate further is regarding your storageClass.

Without mounting the volume it worked properly from my side.

One guess, for now, is regarding your storageClass and the access mode ReadWriteMany.

I will do more tests later and let you know.