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用户的安全态势。更多详情,请访问https://github.com/bitnami/containers/issues/83267%E3%80%82
本Chart使用Helm包管理器在Kubernetes集群上引导部署https://github.com/bitnami/containers/tree/main/bitnami/cassandra%E3%80%82
要使用发布名称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部分。有关这些预设,请查看https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15%E3%80%82%E4%BD%86%E5%9C%A8%E7%94%9F%E4%BA%A7%E5%B7%A5%E4%BD%9C%E8%B4%9F%E8%BD%BD%E4%B8%AD%EF%BC%8C%E4%B8%8D%E5%BB%BA%E8%AE%AE%E4%BD%BF%E7%94%A8%60resourcesPreset%60%EF%BC%8C%E5%9B%A0%E4%B8%BA%E5%AE%83%E5%8F%AF%E8%83%BD%E6%97%A0%E6%B3%95%E5%AE%8C%E5%85%A8%E9%80%82%E5%BA%94%E6%82%A8%E7%9A%84%E7%89%B9%E5%AE%9A%E9%9C%80%E6%B1%82%E3%80%82%E6%9C%89%E5%85%B3%E5%AE%B9%E5%99%A8%E8%B5%84%E6%BA%90%E7%AE%A1%E7%90%86%E7%9A%84%E6%9B%B4%E5%A4%9A%E4%BF%A1%E6%81%AF%EF%BC%8C%E8%AF%B7%E5%8F%82%E9%98%85%E5%AE%98%E6%96%B9Kubernetes%E6%96%87%E6%A1%A3%E3%80%82
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中部署带有https://github.com/criteo/cassandra_exporter%E7%9A%84%E8%BE%B9%E8%BD%A6%E5%AE%B9%E5%99%A8%EF%BC%8C%E5%B9%B6%E9%80%9A%E8%BF%87Cassandra%E6%9C%8D%E5%8A%A1%E6%9A%B4%E9%9C%B2%E6%8C%87%E6%A0%87%E3%80%82%E8%AF%A5%E6%9C%8D%E5%8A%A1%E5%B0%86%E5%85%B7%E6%9C%89%E5%BF%85%E8%A6%81%E7%9A%84%E6%B3%A8%E8%A7%A3%EF%BC%8C%E5%8F%AF%E8%A2%ABPrometheus%E8%87%AA%E5%8A%A8%E6%8A%93%E5%8F%96%E3%80%82
Prometheus要求
要使集成工作,需要安装Prometheus或Prometheus Operator。安装https://github.com/bitnami/charts/tree/main/bitnami/prometheus%E6%88%96https://github.com/bitnami/charts/tree/main/bitnami/kube-prometheus%EF%BC%8C%E5%8F%AF%E8%BD%BB%E6%9D%BE%E5%9C%A8%E9%9B%86%E7%BE%A4%E4%B8%AD%E9%83%A8%E7%BD%B2%E5%8F%AF%E7%94%A8%E7%9A%84Prometheus%E3%80%82
与Prometheus Operator集成
本Chart可为与Prometheus Operator安装集成部署ServiceMonitor对象。为此,需将值metrics.serviceMonitor.enabled=true设置为true。确保集群中已安装Prometheus Operator CustomResourceDefinitions,否则将失败并显示以下错误:
textno matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1"
安装https://github.com/bitnami/charts/tree/main/bitnami/kube-prometheus%E4%BB%A5%E8%8E%B7%E5%8F%96%E5%BF%85%E8%A6%81%E7%9A%84CRD%E5%92%8CPrometheus 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
https://github.com/bitnami/containers/tree/main/bitnami/cassandra%E9%95%9C%E5%83%8F%E6%94%AF%E6%8C%81%E4%BD%BF%E7%94%A8%E8%87%AA%E5%AE%9A%E4%B9%89%E8%84%9A%E6%9C%AC%E5%88%9D%E5%A7%8B%E5%8C%96%E6%96%B0%E5%AE%9E%E4%BE%8B%E3%80%82%E5%8F%AF%E9%80%9A%E8%BF%87%E5%88%9B%E5%BB%BA%E5%8C%85%E5%90%AB%E5%BF%85%E8%A6%81%60.sh%60%E6%88%96%60.cql%60%E8%84%9A%E6%9C%AC%E7%9A%84Kubernetes 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文档。
作为替代方案,您可以使用https://github.com/bitnami/charts/tree/main/bitnami/common#affinitiesChart%E4%B8%AD%E6%8F%90%E4%BE%9B%E7%9A%84Pod%E4%BA%B2%E5%92%8C%E6%80%A7%E3%80%81Pod%E5%8F%8D%E4%BA%B2%E5%92%8C%E6%80%A7%E5%92%8C%E8%8A%82%E7%82%B9%E4%BA%B2%E5%92%8C%E6%80%A7%E9%A2%84%E8%AE%BE%E9%85%8D%E7%BD%AE%E3%80%82%E4%B8%BA%E6%AD%A4%EF%BC%8C%E8%AE%BE%E7%BD%AE%60XXX.podAffinityPreset%60%E3%80%81%60XXX.podAntiAffinityPreset%60%E6%88%96%60XXX.nodeAffinityPreset%60%E5%8F%82%E6%95%B0%E3%80%82
https://github.com/bitnami/containers/tree/main/bitnami/cassandra%E9%95%9C%E5%83%8F%E5%B0%86Apache 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 | 运行容器的命令(如果未设置则使用默认值)。使用数组形式 | [] |
以下是 bitnamicharts/cassandra 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务