You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Minikube转Kind集群:Cassandra StatefulSet存储类配置调整咨询

Minikube转Kind集群:Cassandra StatefulSet存储类配置调整咨询

你观察得完全正确!把这个Cassandra StatefulSet从Minikube迁移到Kind集群,最关键的调整就在存储类(StorageClass)的配置上——也就是你留意到的provisioner字段。咱们一步步来梳理修改点:

核心修改:替换存储类的Provisioner

Kind集群默认使用的本地存储供应器是rancher.io/local-path,而非Minikube的k8s.io/minikube-hostpath。另外原来的type: pd-ssd是针对GCE云磁盘的参数,在Kind本地存储场景下完全没用,直接删掉即可。

修改后的完整YAML配置

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:
      terminationGracePeriodSeconds: 1800
      containers:
      - name: cassandra
        image: gcr.io/google-samples/cassandra:v13
        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: 1Gi
---
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: fast
provisioner: rancher.io/local-path

额外注意事项

  • 大部分其他配置(比如镜像、资源限制、Cassandra集群参数)在Minikube和Kind里是通用的,不需要改动。
  • 部署前可以先确认Kind集群里是否存在local-path存储类:执行kubectl get storageclasses,如果没看到,你可以手动安装local-path-provisioner(不过Kind默认会自带这个组件)。
  • 如果部署后Pod卡在Pending状态,大概率是存储卷创建有问题,用kubectl describe pod <pod-name>查看事件日志,排查存储类是否正常工作。

备注:内容来源于stack exchange,提问作者best_of_man

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 09:17:47