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
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.