github.com/m3db/m3@v1.5.1-0.20231129193456-75a402aa583b/kube/m3dbnode-statefulset.yaml (about)

     1  # Headless service for the statefulset
     2  apiVersion: v1
     3  kind: Service
     4  metadata:
     5    name: m3dbnode
     6    labels:
     7      app: m3dbnode
     8    namespace: m3db
     9  spec:
    10    ports:
    11    - port: 9000
    12      name: client
    13    - port: 9001
    14      name: cluster
    15    - port: 9002
    16      name: http-node
    17    - port: 9003
    18      name: http-cluster
    19    - port: 9004
    20      name: debug
    21    - port: 7201
    22      name: coordinator
    23    - port: 7203
    24      name: coordinator-metrics
    25    # NOTE: There MUST be a headless (clusterIP == None) service with name equal
    26    # to the `spec.serviceName` field of the stateful set. Search "headless" on
    27    # https://v1-10.docs.kubernetes.io/docs/concepts/workloads/controllers/statefulset/
    28    # for more info
    29    clusterIP: None
    30    selector:
    31      app: m3dbnode
    32  ---
    33  apiVersion: v1
    34  kind: Service
    35  metadata:
    36    name: m3coordinator
    37    labels:
    38      app: m3dbnode
    39    namespace: m3db
    40  spec:
    41    selector:
    42      app: m3dbnode
    43    ports:
    44    - port: 7201
    45      name: coordinator
    46    - port: 7203
    47      name: coordinator-metrics
    48  ---
    49  apiVersion: apps/v1
    50  kind: StatefulSet
    51  metadata:
    52    labels:
    53      app: m3dbnode
    54    name: m3dbnode
    55    namespace: m3db
    56  spec:
    57    serviceName: m3dbnode
    58    replicas: 3
    59    selector:
    60      matchLabels:
    61        app: m3dbnode
    62    updateStrategy:
    63      type: RollingUpdate
    64    template:
    65      metadata:
    66        labels:
    67          app: m3dbnode
    68      spec:
    69        tolerations:
    70          - key: "dedicated-m3db"
    71            effect: NoSchedule
    72            operator: Exists
    73        affinity:
    74          nodeAffinity:
    75            preferredDuringSchedulingIgnoredDuringExecution:
    76            - preference:
    77                matchExpressions:
    78                - key: m3db.io/dedicated-m3db
    79                  operator: In
    80                  values:
    81                    - "true"
    82              weight: 10
    83        containers:
    84        - name: m3db
    85          image: quay.io/m3/m3dbnode:latest
    86          # Allows m3dbnode to raise its own file limits. Comment this out if you
    87          # have a restrictive Pod Security Policy or similar enforcement
    88          # mechanisms.
    89          securityContext:
    90            capabilities:
    91              add:
    92              - SYS_RESOURCE
    93          imagePullPolicy: Always
    94          # resources:
    95          #   limits:
    96          #     memory: 15Gi
    97          #   requests:
    98          #     memory: 10Gi
    99          args:
   100            - "-f"
   101            - "/etc/m3db/m3dbnode.yml"
   102          volumeMounts:
   103          - name: config-vol
   104            mountPath: /etc/m3db/
   105          - name: m3db-db
   106            mountPath: /var/lib/m3db
   107          ports:
   108          - containerPort: 9000
   109            name: client
   110            protocol: TCP
   111          - containerPort: 9001
   112            name: cluster
   113            protocol: TCP
   114          - containerPort: 9002
   115            name: http-node
   116            protocol: TCP
   117          - containerPort: 9003
   118            name: http-cluster
   119            protocol: TCP
   120          - containerPort: 9004
   121            name: debug
   122            protocol: TCP
   123          - containerPort: 7201
   124            name: coordinator
   125            protocol: TCP
   126          - containerPort: 7203
   127            # max name length == 15 chars
   128            name: coord-metrics
   129            protocol: TCP
   130        volumes:
   131        - name: config-vol
   132          configMap:
   133            name: m3dbnode-config
   134        dnsPolicy: ClusterFirst
   135        restartPolicy: Always
   136        schedulerName: default-scheduler
   137        securityContext: {}
   138        terminationGracePeriodSeconds: 30
   139    volumeClaimTemplates:
   140      - metadata:
   141          name: m3db-db
   142        spec:
   143          accessModes:
   144            - ReadWriteOnce
   145          storageClassName: fast
   146          resources:
   147            requests:
   148              storage: 200Gi