kubernetes creating stateful set , pods not started

10/6/2019

I created a stateful set but after running kubectl apply -f wordpress-database.yaml and kubectl get statefulset I see the pod is alwayson status zero (why?):

wordpress-database   0/1     25m

yaml (please do not consider alignment)

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: wordpress-database
spec:
  selector:
    matchLabels:
      app: blog
  serviceName: "blog"
  replicas: 1
  template:
  metadata:
  labels:
    app: blog 
  spec:
  containers:
  - name: database
    image: mysql:5.7
    ports:
    - containerPort: 3306
    env:
    - name: MYSQL_ROOT_PASSWORD
      value: rootPassword
    - name: MYSQL_DATABASE
      value: database
    - name: MYSQL_USER
      value: user
    - name: MYSQL_PASSWORD
      value: password          
    volumeMounts:
    - name: data
      mountPath: /var/lib/mysql
  - name: blog
    image: wordpress:latest
    ports:
    - containerPort: 80
    env:
    - name: WORDPRESS_DB_HOST
      value: 127.0.0.1:3306
    - name: WORDPRESS_DB_NAME
      value: database
    - name: WORDPRESS_DB_USER
      value: user
    - name: WORDPRESS_DB_PASSWORD
      value: password  
    volumeClaimTemplates:
    - metadata:
    name: data
    spec:
    resources:
    requests:
      storage: 1Gi
-- Stefano Maglione
kubernetes

1 Answer

10/7/2019

Firstly to check what happend with your statefulset execute:

$ kubectl describe statefulset wordpress-database 

You probably don't have storage provided, your persistent volume is not being created. Check if you have configured storageclass or set it as default.

your volumeClaimTemplates section should looks similar:

 volumeClaimTemplates:
  - metadata:
      name: example
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "your-storage-class"
      resources:
        requests:
          storage: 1Gi

Useful documentation: PersistentVolumes.

-- MaggieO
Source: StackOverflow