| # |
| # Copyright 2016 Yahoo Inc. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| |
| |
| apiVersion: v1 |
| kind: ConfigMap |
| metadata: |
| name: bookie-config |
| data: |
| PULSAR_MEM: "\" -Xms4g -Xmx4g -XX:MaxDirectMemorySize=4g\"" |
| PULSAR_GC: "\" -XX:+UseG1GC \"" |
| dbStorage_writeCacheMaxSizeMb: "1024" |
| dbStorage_readAheadCacheMaxSizeMb: "1024" |
| zkServers: zk-0.zookeeper,zk-1.zookeeper,zk-2.zookeeper |
| statsProviderClass: org.apache.bookkeeper.stats.PrometheusMetricsProvider |
| --- |
| |
| ## BookKeeper servers need to access the local disks and the pods |
| ## cannot be moved across different nodes. |
| ## For this reason, we run BK as a daemon set, one for each node in the |
| ## cluster, unless restricted by label selectors |
| apiVersion: extensions/v1beta1 |
| kind: DaemonSet |
| metadata: |
| name: bookie |
| labels: |
| app: pulsar |
| component: bookkeeper |
| spec: |
| template: |
| metadata: |
| labels: |
| app: pulsar |
| component: bookkeeper |
| # Specify cluster to allow aggregation by cluster in |
| # the metrics |
| cluster: us-central |
| annotations: |
| prometheus.io/scrape: "true" |
| prometheus.io/port: "8000" |
| |
| spec: |
| containers: |
| - name: bookie |
| image: streamlio/pulsar:latest |
| command: ["sh", "-c"] |
| args: |
| - > |
| bin/apply-config-from-env.py conf/bookkeeper.conf && |
| bin/pulsar bookie |
| ports: |
| - containerPort: 3181 |
| name: client |
| envFrom: |
| - configMapRef: |
| name: bookie-config |
| |
| volumeMounts: |
| - name: journal-disk |
| mountPath: /pulsar/data/bookkeeper/journal |
| - name: ledgers-disk |
| mountPath: /pulsar/data/bookkeeper/ledgers |
| |
| # bin/bookkeeper shell bookiesanity |
| |
| initContainers: |
| # The first time, initialize BK metadata in zookeeper |
| # Otherwise ignore error if it's already there |
| - name: bookie-metaformat |
| image: streamlio/pulsar:latest |
| command: ["sh", "-c"] |
| args: |
| - > |
| bin/apply-config-from-env.py conf/bookkeeper.conf && |
| bin/bookkeeper shell metaformat --nonInteractive || true; |
| envFrom: |
| - configMapRef: |
| name: bookie-config |
| |
| volumes: |
| # Mount local disks |
| - name: journal-disk |
| hostPath: |
| path: /mnt/disks/ssd0 |
| - name: ledgers-disk |
| hostPath: |
| path: /mnt/disks/ssd1 |
| |
| --- |
| |
| ## |
| ## Define the Bookie headless service |
| ## In practice, in this case, it is only useful to have a view of |
| ## all the bookie pods that are present |
| ## |
| apiVersion: v1 |
| kind: Service |
| metadata: |
| name: bookkeeper |
| labels: |
| app: pulsar |
| component: bookkeeper |
| spec: |
| ports: |
| - port: 3181 |
| name: server |
| clusterIP: None |
| selector: |
| app: pulsar |
| component: bookkeeper |
| |
| --- |
| ## |
| ## Run BookKeeper auto-recovery from a different set of containers |
| ## Auto-Recovery makes sure to restore the replication factor when any bookie |
| ## crashes and it's not recovering on its own. |
| ## |
| apiVersion: apps/v1beta1 |
| kind: Deployment |
| metadata: |
| name: bookie-autorecovery |
| spec: |
| replicas: 2 |
| template: |
| metadata: |
| labels: |
| app: pulsar |
| component: bookkeeper-replication |
| spec: |
| containers: |
| - name: replication-worker |
| image: streamlio/pulsar:latest |
| command: ["sh", "-c"] |
| args: |
| - > |
| bin/apply-config-from-env.py conf/bookkeeper.conf && |
| bin/bookkeeper autorecovery |
| envFrom: |
| - configMapRef: |
| name: bookie-config |
| env: |
| ## Configure for lower mem usage |
| - name: PULSAR_MEM |
| value: "\" -Xmx256m \"" |
| - name: PULSAR_GC |
| value: "\" \"" |