有人尝试过在gcp上使用kubernetes(而不是gke)部署cassandra(poc)吗。如果是的话,你能分享如何让它工作的信息吗?
o7jaxewo1#
使用 Helm :在mac上:
brew install helm@2 brew link --force helm@2 helm init
为了避免Kubernetes掌舵地狱:从:https://github.com/helm/helm/issues/2224:
kubectl create serviceaccount --namespace kube-system tiller kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
helm repo add https://github.com/helm/charts/tree/master/incubator/cassandra helm install --namespace "cassandra" -n "cassandra" incubator/cassandra helm status "cassandra" helm delete --purge "cassandra"
helm repo add bitnami https://charts.bitnami.com/bitnami helm install --namespace "cassandra" -n "my-deployment" bitnami/cassandra helm status "my-deployment" helm delete --purge "my-deployment"
mrphzbgm2#
您可以先看看ibm在kubernetes上的可伸缩cassandra部署。对于种子发现,您可以使用无头服务,类似于kubernetes简化的多节点cassandra集群。一些困难:k8s的快速本地存储仍处于测试阶段;当然,你可以用k8s已经有的东西;有一些用户报告说,他们使用ceph rbd,有8个c节点,每个节点在k8s上有2tb的数据。在某个时候,你会意识到你需要一个c操作符——这里有一些不错的启动——instaclustr的cassandra操作符和pantheon systems的cassandra操作符您需要一种方法来在优雅的有状态应用程序中进行扩展(也应该由操作员负责;这是一个解决方案,如果你不需要一个操作员,但你仍然需要使用一个控制器)。您还可以查看cassandra邮件列表,因为那里已经有人在生产中使用cassandra over K8。
z18hc3ub3#
我在kubernetes上实现了cassandra。请查找我的部署和服务yaml文件:
apiVersion: v1 kind: Service metadata: labels: app: cassandra name: cassandra spec: clusterIP: None ports: - port: 9042 selector: app: cassandra --- apiVersion: apps/v1beta2 kind: StatefulSet metadata: name: cassandra labels: app: cassandra spec: serviceName: cassandra replicas: 3 updateStrategy: type: RollingUpdate selector: matchLabels: app: cassandra template: metadata: labels: app: cassandra spec: terminationGracePeriodSeconds: 1800 containers: - name: cassandra image: gcr.io/google-samples/cassandra:v12 imagePullPolicy: Always ports: - containerPort: 7000 name: intra-node - containerPort: 7001 name: tls-intra-node - containerPort: 7199 name: jmx - containerPort: 9042 name: cql resources: limits: cpu: "500m" memory: 1Gi requests: cpu: "500m" memory: 1Gi securityContext: capabilities: add: - IPC_LOCK lifecycle: preStop: exec: command: - /bin/sh - -c - nodetool drain env: - name: MAX_HEAP_SIZE value: 512M - name: HEAP_NEWSIZE value: 100M - name: CASSANDRA_SEEDS value: "cassandra-0.cassandra.default.svc.cluster.local" - name: CASSANDRA_CLUSTER_NAME value: "K8Demo" - name: CASSANDRA_DC value: "DC1-K8Demo" - name: CASSANDRA_RACK value: "Rack1-K8Demo" - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP readinessProbe: exec: command: - /bin/bash - -c - /ready-probe.sh initialDelaySeconds: 15 timeoutSeconds: 5 volumeMounts: - name: cassandra-data mountPath: /cassandra_data volumeClaimTemplates: - metadata: name: cassandra-data spec: accessModes: [ "ReadWriteOnce" ] storageClassName: "fast" resources: requests: storage: 5Gi
希望这有帮助。
3条答案
按热度按时间o7jaxewo1#
使用 Helm :
在mac上:
为了避免Kubernetes掌舵地狱:从:https://github.com/helm/helm/issues/2224:
Cassandra
培养箱:
比特纳米:
mrphzbgm2#
您可以先看看ibm在kubernetes上的可伸缩cassandra部署。
对于种子发现,您可以使用无头服务,类似于kubernetes简化的多节点cassandra集群。
一些困难:
k8s的快速本地存储仍处于测试阶段;当然,你可以用k8s已经有的东西;有一些用户报告说,他们使用ceph rbd,有8个c节点,每个节点在k8s上有2tb的数据。
在某个时候,你会意识到你需要一个c操作符——这里有一些不错的启动——instaclustr的cassandra操作符和pantheon systems的cassandra操作符
您需要一种方法来在优雅的有状态应用程序中进行扩展(也应该由操作员负责;这是一个解决方案,如果你不需要一个操作员,但你仍然需要使用一个控制器)。
您还可以查看cassandra邮件列表,因为那里已经有人在生产中使用cassandra over K8。
z18hc3ub3#
我在kubernetes上实现了cassandra。请查找我的部署和服务yaml文件:
希望这有帮助。