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
相关产品推荐
相关产品推荐

