Repository Reading Site
20-web-statefulset.yaml
manifests/09-statefulset/20-web-statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
namespace: stateful-lab
labels:
lesson: statefulset
spec:
podManagementPolicy: OrderedReady
persistentVolumeClaimRetentionPolicy:
whenDeleted: Retain
whenScaled: Retain
replicas: 3
serviceName: web-hl
selector:
matchLabels:
app: web
lesson: statefulset
template:
metadata:
labels:
app: web
lesson: statefulset
spec:
terminationGracePeriodSeconds: 10
initContainers:
- name: bootstrap
image: busybox:1.36
command:
- sh
- -c
- |
sleep 8
pod_name="$(hostname)"
ordinal="${pod_name##*-}"
if [ ! -f /data/index.html ]; then
printf 'pod=%s\nordinal=%s\nfirst_boot=%s\nnode=%s\n' \
"${pod_name}" \
"${ordinal}" \
"$(date '+%Y-%m-%dT%H:%M:%S%z')" \
"${NODE_NAME}" > /data/index.html
fi
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
volumeMounts:
- name: data
mountPath: /data
containers:
- name: web
image: busybox:1.36
command:
- sh
- -c
- |
httpd -f -p 8080 -h /data
ports:
- containerPort: 8080
name: http
readinessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 1
periodSeconds: 2
resources:
requests:
cpu: 10m
memory: 32Mi
volumeMounts:
- name: data
mountPath: /data
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes:
- ReadWriteOnce
storageClassName: nfs-dynamic
resources:
requests:
storage: 1Gi