Apache Cassandra 是一个开源分布式数据库管理系统,旨在跨多台服务器处理大量数据,提供高可用性且无单点故障。
Apache Cassandra 概述
商标说明:本软件列表由Bitnami打包。所提及的相应商标归各自公司所有,使用这些商标并不意味着任何关联或背书。
consolehelm install my-release oci://registry-1.docker.io/bitnamicharts/cassandra
希望在生产环境中使用Apache Cassandra?请尝试VMware Tanzu Application Catalog,即Bitnami目录的商业版本。
自2025年8月28日起,Bitnami将升级其公共目录,在新的Bitnami Secure Images计划下提供精选的强化、安全聚焦镜像集。作为此过渡的一部分:
这些变更旨在通过推广软件供应链完整性和最新部署的最佳实践,提升所有Bitnami用户的安全态势。更多详情,请访问Bitnami Secure Images公告。
本Chart使用Helm包管理器在Kubernetes集群上引导部署Apache Cassandra。
要使用发布名称my-release安装Chart:
consolehelm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/cassandra
注意:您需要将占位符
REGISTRY_NAME和REPOSITORY_NAME替换为Helm Chart仓库和存储库的引用。例如,对于Bitnami,需使用REGISTRY_NAME=registry-1.docker.io和REPOSITORY_NAME=bitnamicharts。
这些命令以默认配置在Kubernetes集群上部署一个节点的Apache Cassandra。参数部分列出了可在安装过程中配置的参数。
提示:使用
helm list列出所有发布版本
Bitnami Charts允许为Chart部署内的所有容器设置资源请求和限制,这些配置位于resources值中(参见参数表)。为生产工作负载设置请求至关重要,且应根据具体用例进行调整。
为简化此过程,Chart包含resourcesPreset值,可根据不同预设自动设置resources部分。有关这些预设,请查看bitnami/common chart。但在生产工作负载中,不建议使用resourcesPreset,因为它可能无法完全适应您的特定需求。有关容器资源管理的更多信息,请参阅***Kubernetes文档。
Bitnami Charts在首次启动时配置凭证。后续对密钥或凭证的任何更改都需要手动干预。请按照以下说明操作:
shellkubectl create secret generic SECRET_NAME --from-literal=cassandra-password=PASSWORD --dry-run -o yaml | kubectl apply -f -
强烈建议在生产环境中使用不可变标签。这可确保如果同一标签使用不同镜像更新,您的部署不会自动更改。
如果主容器有新版本、重大更改或严重漏洞,Bitnami将发布新Chart以更新其容器。
通过将metrics.enabled设置为true,本Chart可与Prometheus集成。这将在所有Pod中部署带有cassandra_exporter的边车容器,并通过Cassandra服务暴露指标。该服务将具有必要的注解,可被Prometheus自动抓取。
要使集成工作,需要安装Prometheus或Prometheus Operator。安装Bitnami Prometheus Helm Chart或Bitnami Kube Prometheus Helm Chart,可轻松在集群中部署可用的Prometheus。
本Chart可为与Prometheus Operator安装集成部署ServiceMonitor对象。为此,需将值metrics.serviceMonitor.enabled=true设置为true。确保集群中已安装Prometheus Operator CustomResourceDefinitions,否则将失败并显示以下错误:
textno matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1"
安装Bitnami Kube Prometheus Helm Chart以获取必要的CRD和Prometheus Operator。
本Chart支持客户端与服务器之间以及节点之间的TLS,如下所述:
tls.internodeEncryptionChart参数设置为非none的值。可用值为all、dc或rack。tls.clientEncryptionChart参数设置为true。在这两种情况下,还需要创建包含密钥库和信任库证书及其相应保护密码的密钥,并在部署时通过tls.existingSecret参数将此密钥传递给Chart,如下所示:
texttls.internodeEncryption=all tls.clientEncryption=true tls.existingSecret=my-exisiting-stores tls.passwordsSecret=my-stores-password
提示:可使用
--from-file=./keystore、--from-file=./truststore、--from-literal=keystore-password=KEYSTORE_PASSWORD和--from-literal=truststore-password=TRUSTSTORE_PASSWORD选项以标准方式创建密钥。假设存储库在当前工作目录中,且KEYSTORE_PASSWORD和TRUSTSTORE_PASSWORD占位符替换为正确的密钥库和信任库密码。示例:
consolekubectl create secret generic my-exisiting-stores --from-file=./keystore --from-file=./truststore kubectl create secret generic my-stores-password --from-literal=keystore-password=KEYSTORE_PASSWORD --from-literal=truststore-password=TRUSTSTORE_PASSWORD
密钥库和信任库文件可从证书文件动态创建。在这种情况下,需要包含pem格式的tls.crt、tls.key和ca.crt的密钥。以下示例显示如何创建密钥,并假设所有证书文件都在工作目录中:
consolekubectl create secret tls my-certs --cert ./tls.crt --key ./tls.key kubectl patch secret my-certs -p="{\"data\":{\"ca.crt\": \"$(cat ./ca.crt | base64 )\"}}"
要启用此功能,必须设置tls.autoGenerated,并将新密钥设置在tls.certificateSecret中:
texttls.internodeEncryption=all tls.clientEncryption=true tls.autoGenerated=true tls.certificatesSecret=my-certs tls.passwordsSecret=my-stores-password
Apache Cassandra镜像支持使用自定义脚本初始化新实例。可通过创建包含必要.sh或.cql脚本的Kubernetes ConfigMap,并通过initDBConfigMap参数将此ConfigMap传递给Chart来实现。
本Chart还支持挂载Apache Cassandra的自定义配置文件。通过将existingConfiguration参数设置为包含自定义配置文件的ConfigMap名称来实现。以下是使用存储在名为cassandra-configuration的ConfigMap中的自定义配置文件部署Chart的示例:
textexistingConfiguration=cassandra-configuration
注意:此ConfigMap将覆盖Chart中设置的其他Apache Cassandra配置变量。
请参阅详细教程在Kubernetes上备份和恢复Bitnami Apache Cassandra部署。
本Chart允许使用XXX.affinity参数设置自定义Pod亲和性。有关Pod亲和性的更多信息,请参阅Kubernetes文档。
作为替代方案,您可以使用bitnami/commonChart中提供的Pod亲和性、Pod反亲和性和节点亲和性预设配置。为此,设置XXX.podAffinityPreset、XXX.podAntiAffinityPreset或XXX.nodeAffinityPreset参数。
Bitnami Apache Cassandra镜像将Apache Cassandra数据存储在容器的/bitnami/cassandra路径下。
持久卷声明(Persistent Volume Claims)用于跨部署保留数据。已知在GCE、AWS和minikube中有效。 请参阅参数部分配置PVC或禁用持久化。
如果在使用持久卷时遇到错误,请参阅持久卷故障排除指南。
由于镜像默认以非root用户运行,需要调整持久卷的所有权,以便容器可以写入数据。有两种方法可实现此目的:
podSecurityContext.enabled和containerSecurityContext.enabled设置为true来使用Kubernetes SecurityContexts。此选项在Chart中默认启用。但并非所有Kubernetes发行版都支持此功能。volumePermissions.enabled参数设置为true启用此容器。| 名称 | 描述 | 值 |
|---|---|---|
global.imageRegistry | 全局Docker镜像仓库 | "" |
global.imagePullSecrets | 全局Docker仓库密钥名称数组 | [] |
global.defaultStorageClass | 持久卷的全局默认StorageClass | "" |
global.security.allowInsecureImages | 允许跳过镜像验证 | false |
global.compatibility.openshift.adaptSecurityContext | 调整部署的securityContext部分以使其与OpenShift restricted-v2 SCC兼容:移除runAsUser、runAsGroup和fsGroup,让平台使用其允许的默认ID。可能值:auto(如果检测到运行的集群是OpenShift则应用)、force(始终执行调整)、disabled(不执行调整) | auto |
| 名称 | 描述 | 值 |
|---|---|---|
nameOverride | 部分覆盖common.names.fullname的字符串 | "" |
fullnameOverride | 完全覆盖common.names.fullname的字符串 | "" |
kubeVersion | 强制目标Kubernetes版本(如果未设置,则使用Helm功能) | "" |
commonLabels | 添加到所有部署对象的标签(不考虑子Chart) | {} |
commonAnnotations | 添加到所有部署对象的注解 | {} |
clusterDomain | Kubernetes集群域名 | cluster.local |
extraDeploy | 随发布一起部署的额外对象数组 | [] |
usePasswordFiles | 将凭证挂载为文件而非使用环境变量 | true |
diagnosticMode.enabled | 启用诊断模式(所有探针将被禁用,命令将被覆盖) | false |
diagnosticMode.command | 覆盖部署中所有容器的命令 | ["sleep"] |
diagnosticMode.args | 覆盖部署中所有容器的参数 | ["infinity"] |
| 名称 | 描述 | 值 |
|---|---|---|
image.registry | Cassandra镜像仓库 | REGISTRY_NAME |
image.repository | Cassandra镜像存储库 | REPOSITORY_NAME/cassandra |
image.digest | Cassandra镜像摘要,格式为sha256:aa.... 注意:如果设置此参数,将覆盖标签 | "" |
image.pullPolicy | 镜像拉取策略 | IfNotPresent |
image.pullSecrets | Cassandra镜像拉取密钥 | [] |
image.debug | 启用镜像调试模式 | false |
dbUser.user | Cassandra管理员用户 | cassandra |
dbUser.forcePassword | 强制用户提供非空密码 | false |
dbUser.password | dbUser.user的密码。如果为空则随机生成 | "" |
dbUser.existingSecret | 使用现有密钥对象存储dbUser.user密码(将忽略dbUser.password) | "" |
initDB | 包含cql脚本的对象,用于创建keyspace和预填充数据 | {} |
initDBConfigMap | 包含cql脚本的ConfigMap,用于创建keyspace和预填充数据 | "" |
initDBSecret | 包含cql脚本(含敏感数据)的密钥,用于创建keyspace和预填充数据 | "" |
existingConfiguration | 包含自定义cassandra配置文件的ConfigMap,将覆盖Chart中设置的其他配置 | "" |
cluster.name | Cassandra集群名称 | cassandra |
cluster.seedCount | 种子节点数量 | 1 |
cluster.numTokens | 每个节点的令牌数量 | 256 |
cluster.datacenter | 数据中心名称 | dc1 |
cluster.rack | 机架名称 | rack1 |
cluster.endpointSnitch | 端点探测器 | SimpleSnitch |
cluster.clientEncryption | 客户端加密 | false |
cluster.extraSeeds | 用于外部/第二个cassandra环 | [] |
cluster.enableUDF | 启用用户定义函数 | false |
dynamicSeedDiscovery.enabled | 启用dynamic-seed-discovery初始化容器 | false |
dynamicSeedDiscovery.image.registry | dynamic-seed-discovery初始化容器镜像仓库 | REGISTRY_NAME |
dynamicSeedDiscovery.image.repository | dynamic-seed-discovery初始化容器镜像存储库 | REPOSITORY_NAME/alpine |
dynamicSeedDiscovery.image.digest | dynamic-seed-discovery初始化容器镜像摘要,格式为sha256:aa.... 注意:如果设置此参数,将覆盖标签 | "" |
dynamicSeedDiscovery.image.pullPolicy | dynamic-seed-discovery初始化容器拉取策略 | IfNotPresent |
dynamicSeedDiscovery.image.pullSecrets | 指定docker仓库密钥名称数组 | [] |
jvm.extraOpts | Java虚拟机额外选项 | "" |
jvm.maxHeapSize | Java虚拟机最大堆大小(MAX_HEAP_SIZE)。如果为nil则自动计算 | "" |
jvm.newHeapSize | Java虚拟机新堆大小(HEAP_NEWSIZE)。如果为nil则自动计算 | "" |
command | 运行容器的命令(如果未设置则使用默认值)。使用数组形式 | [] |

来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429