首页 > 解决方案 > 如何使用有状态集 kubernetes 将 cassandra 数据位置挂载到 azure 文件共享

问题描述

我正在使用 Statefull set Kubernetes 在 Azure 上设置 3 节点 Cassandra 集群,但无法在 azure 文件共享中挂载数据位置。

我可以使用默认的 kubenetes 存储,但不能使用 Azurefile 共享选项。

我尝试了下面给出的以下步骤,在 volumeClaimTemplates 中发现了困难

apiVersion: "apps/v1"
kind: StatefulSet
metadata:
  name: cassandra
  labels:
    app: cassandra
spec:
  serviceName: cassandra
  replicas: 3
  selector:
    matchLabels:
      app: cassandra
  template:
    metadata:
      labels:
        app: cassandra
    spec:
      containers:
        - name: cassandra
          image: cassandra
          imagePullPolicy: Always
          ports:
            - containerPort: 7000
              name: intra-node
            - containerPort: 7001
              name: tls-intra-node
            - containerPort: 7199
              name: jmx
            - containerPort: 9042
              name: cql
          env:
            - name: CASSANDRA_SEEDS
              value: cassandra-0.cassandra.default.svc.cluster.local
            - name: MAX_HEAP_SIZE
              value: 256M
            - name: HEAP_NEWSIZE
              value: 100M
            - name: CASSANDRA_CLUSTER_NAME
              value: "Cassandra"
            - name: CASSANDRA_DC
              value: "DC1"
            - name: CASSANDRA_RACK
              value: "Rack1"
            - name: CASSANDRA_ENDPOINT_SNITCH
              value: GossipingPropertyFileSnitch
            - name: POD_IP
              valueFrom:
                fieldRef:
                   fieldPath: status.podIP                 
          volumeMounts:
          - mountPath: /var/lib/cassandra/data
            name: pv002
  volumeClaimTemplates:
  - metadata:
      name: pv002
    spec:
      storageClassName: default
      accessModes:
        - ReadWriteOnce
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv002
  accessModes:
  - ReadWriteOnce
  azureFile:
    secretName: storage-secret
    shareName: xxxxx
    readOnly: false
  claimRef:
    namespace: default
    name: az-files-02
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: az-files-02
spec:
  accessModes:
    - ReadWriteOnce
---
apiVersion: v1
kind: Secret
metadata:
  name: storage-secret
type: Opaque
data:
  azurestorageaccountname: xxxxx
  azurestorageaccountkey: jjbfjbsfljbafkljasfkl;jf;kjd;kjklsfdhjbsfkjbfkjbdhueueeknekneiononeojnjnjHBDEJKBJBSDJBDJ==

我应该能够将每个 cassandra 节点的数据文件夹挂载到 azure 文件共享中。

标签: azurecassandrakubernetes

解决方案


对于在 statefulset 中使用 azure 文件,我认为您可以遵循以下示例:https ://github.com/andyzhangx/demo/blob/master/linux/azurefile/attach-stress-test/statefulset-azurefile1-2files.yaml


推荐阅读