Aktionen
Deployment vs StatefulSet » Historie » Revision 1
Revision 1/3
| Weiter »
Peter Pfläging, 18.03.2022 16:17
Deployment-vs-StatefulSet¶
Taking PostgreSQL as example:
StatefulSet¶
kind: StatefulSet
apiVersion: apps/v1
metadata:
name: postgresql
spec:
replicas: 1
serviceName: postgresql
selector:
matchLabels:
app: postgresql
template:
metadata:
creationTimestamp: null
labels:
app: postgresql
spec:
containers:
- name: postgresql
image: docker.io/centos/postgresql-12-centos8:latest
envFrom:
- secretRef:
name: database
ports:
- name: postgresql
containerPort: 5432
protocol: TCP
resources:
requests:
cpu: "200m"
memory: "128Mi"
limits:
cpu: "400m"
memory: "256Mi"
readinessProbe:
tcpSocket:
port: 5432
timeoutSeconds: 1
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
livenessProbe:
tcpSocket:
port: 5432
timeoutSeconds: 1
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
volumeMounts:
- name: postgresql
mountPath: /var/lib/pgsql/data
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: Always
restartPolicy: Always
terminationGracePeriodSeconds: 10
dnsPolicy: ClusterFirst
securityContext: {}
schedulerName: default-scheduler
volumeClaimTemplates:
- metadata:
name: postgresql
labels:
app: postgresql
spec:
accessModes:
- ReadWriteOnce
storageClassName: changed-by-upper-kustomize
volumeMode: Filesystem
resources:
requests:
storage: 500Mi
Deployment¶
Here we have a split. We have to explicit declare the PVC:
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: postgresql
spec:
replicas: 1
selector:
matchLabels:
app: postgresql
template:
metadata:
labels:
app: postgresql
spec:
containers:
- name: postgresql
image: docker.io/centos/postgresql-12-centos8:latest
envFrom:
- secretRef:
name: database
resources:
requests:
cpu: "200m"
memory: "128Mi"
limits:
cpu: "400m"
memory: "256Mi"
readinessProbe:
tcpSocket:
port: 5432
timeoutSeconds: 1
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
livenessProbe:
tcpSocket:
port: 5432
timeoutSeconds: 1
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
volumeMounts:
- name: postgresql
mountPath: /var/lib/pgsql/data
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: Always
restartPolicy: Always
terminationGracePeriodSeconds: 10
dnsPolicy: ClusterFirst
securityContext: {}
schedulerName: default-scheduler
volumes:
- name: postgresql
persistentVolumeClaim:
claimName: postgresql
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 25%
revisionHistoryLimit: 10
progressDeadlineSeconds: 600
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: postgresql
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
storageClassName: changed-by-upper-kustomize
volumeMode: Filesystem
Von Peter Pfläging vor etwa 3 Jahren aktualisiert · 3 Revisionen