Files
m3db-vke-setup/04-m3dbnode.yaml

157 lines
4.2 KiB
YAML

##############################################################################
# M3DB Node — Headless Service (for StatefulSet DNS)
##############################################################################
apiVersion: v1
kind: Service
metadata:
name: m3dbnode
namespace: m3db
labels:
app.kubernetes.io/name: m3dbnode
app.kubernetes.io/part-of: m3db
spec:
clusterIP: None
ports:
- name: client
port: 9000
targetPort: 9000
- name: cluster
port: 9001
targetPort: 9001
- name: http-node
port: 9002
targetPort: 9002
- name: http-cluster
port: 9003
targetPort: 9003
- name: debug
port: 9004
targetPort: 9004
- name: coordinator
port: 7201
targetPort: 7201
selector:
app.kubernetes.io/name: m3dbnode
---
##############################################################################
# M3DB Node StatefulSet
# 3 replicas — one per availability zone / node for HA
##############################################################################
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: m3dbnode
namespace: m3db
labels:
app.kubernetes.io/name: m3dbnode
app.kubernetes.io/part-of: m3db
spec:
serviceName: m3dbnode
replicas: 3
podManagementPolicy: Parallel
selector:
matchLabels:
app.kubernetes.io/name: m3dbnode
template:
metadata:
labels:
app.kubernetes.io/name: m3dbnode
app.kubernetes.io/part-of: m3db
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "7203"
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app.kubernetes.io/name
operator: In
values:
- m3dbnode
topologyKey: kubernetes.io/hostname
securityContext:
fsGroup: 65534
terminationGracePeriodSeconds: 120
containers:
- name: m3dbnode
image: quay.io/m3db/m3dbnode:v1.5.0
imagePullPolicy: IfNotPresent
args:
- "-f"
- "/etc/m3db/m3dbnode.yml"
ports:
- containerPort: 9000
name: client
- containerPort: 9001
name: cluster
- containerPort: 9002
name: http-node
- containerPort: 9003
name: http-cluster
- containerPort: 9004
name: debug
- containerPort: 7201
name: coordinator
- containerPort: 7203
name: metrics
volumeMounts:
- name: m3db-data
mountPath: /var/lib/m3db
- name: m3db-config
mountPath: /etc/m3db
- name: cache-dir
mountPath: /var/lib/m3kv
resources:
requests:
cpu: "4"
memory: 8Gi
limits:
cpu: "8"
memory: 20Gi
livenessProbe:
httpGet:
path: /health
port: 9002
initialDelaySeconds: 60
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 5
readinessProbe:
httpGet:
path: /health
port: 9002
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
lifecycle:
preStop:
exec:
command:
- /bin/sh
- -c
- "sleep 30" # allow in-flight writes to drain
volumes:
- name: m3db-config
configMap:
name: m3db-config
- name: cache-dir
emptyDir: {}
volumeClaimTemplates:
- metadata:
name: m3db-data
spec:
storageClassName: vultr-block-storage-m3db
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 100Gi # Adjust based on retention & cardinality