
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
https://badgen.net/badge/Slack/Join%20RisingWave/0abd59?icon=slack]([***] !https://github.com/risingwavelabs/risingwave-operator/actions/workflows/e2e.yaml/badge.svg?branch=main https://codecov.io/gh/risingwavelabs/risingwave-operator/branch/main/graph/badge.svg?token=D08wi9hnt4](https://codecov.io/gh/risingwavelabs/risingwave-operator)
RisingWave Operator是一个在Kubernetes上运行的https://github.com/risingwavelabs/risingwave%E9%83%A8%E7%BD%B2%E5%92%8C%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F%E3%80%82%E5%AE%83%E6%8F%90%E4%BE%9B%E5%9C%A8Kubernetes%E9%9B%86%E7%BE%A4%E5%86%85%E9%85%8D%E7%BD%AE%E3%80%81%E5%8D%87%E7%BA%A7%E3%80%81%E6%89%A9%E5%B1%95%E5%92%8C%E9%94%80%E6%AF%81%60RisingWave%60%E5%AE%9E%E4%BE%8B%E7%9A%84%E5%8A%9F%E8%83%BD%E3%80%82%E8%AF%A5%E7%B3%BB%E7%BB%9F%E5%88%A9%E7%94%A8Kubernetes%E4%B8%AD%E7%9A%84%E6%A6%82%E5%BF%B5%E5%AF%B9%E9%83%A8%E7%BD%B2%E5%92%8C%E7%AE%A1%E7%90%86%E6%B5%81%E7%A8%8B%E8%BF%9B%E8%A1%8C%E5%BB%BA%E6%A8%A1%EF%BC%8C%E5%B9%B6%E9%80%9A%E8%BF%87https://kubernetes.io/docs/concepts/extend-kubernetes/operator/%E8%BF%9B%E8%A1%8C%E7%BB%84%E7%BB%87%E3%80%82%E5%9B%A0%E6%AD%A4%EF%BC%8C%E6%88%91%E4%BB%AC%E5%8F%AA%E9%9C%80%E5%A3%B0%E6%98%8E%E6%89%80%E9%9C%80%E7%9A%84%60RisingWave%60%E5%AE%9E%E4%BE%8B%E7%B1%BB%E5%9E%8B%EF%BC%8C%E5%B9%B6%E5%B0%86%E5%85%B6%E4%BD%9C%E4%B8%BA%E5%AF%B9%E8%B1%A1%E5%9C%A8Kubernetes%E4%B8%AD%E5%88%9B%E5%BB%BA%EF%BC%8CRisingWave Operator会确保最终状态与声明一致。
Operator还包含多个自定义资源,详情请参见API文档。
在安装risingwave-operator之前,需要先在集群中安装cert-manager。
可以通过以下命令安装默认静态配置的cert-manager:
shellkubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.9.1/cert-manager.yaml
更多关于cert-manager安装的信息https://cert-manager.io/docs/installation/#default-static-install%E3%80%82
之后,可通过以下命令安装risingwave-operator:
shellkubectl apply -f https://github.com/risingwavelabs/risingwave-operator/releases/latest/download/risingwave-operator.yaml
要检查安装是否成功,可运行以下命令查看Pod是否均已运行:
shellkubectl -n cert-manager get pods kubectl -n risingwave-operator-system get pods
注意:如果遇到以下错误,请不必担心:
textError from server (InternalError): error when creating "https://github.com/risingwavelabs/risingwave-operator/releases/latest/download/risingwave-operator.yaml": Internal error occurred: failed calling webhook "webhook.cert-manager.io": Post "https://cert-manager-webhook.cert-manager.svc:443/mutate?timeout=10s": dial tcp 10.111.35.75:443: connect: connection refused Error from server (InternalError): error when creating "https://github.com/risingwavelabs/risingwave-operator/releases/latest/download/risingwave-operator.yaml": Internal error occurred: failed calling webhook "webhook.cert-manager.io": Post "https://cert-manager-webhook.cert-manager.svc:443/mutate?timeout=10s": dial tcp 10.111.35.75:443: connect: connection refused
这些错误是由于cert-manager正在初始化导致的。稍等一分钟后,重新应用上述risingwave-operator.yaml即可。
现在可以通过以下命令部署一个使用内存存储的RisingWave实例(注意节点架构):
shellkubectl apply -f https://raw.githubusercontent.com/risingwavelabs/risingwave-operator/main/docs/manifests/risingwave/risingwave-in-memory.yaml
通过以下命令检查RisingWave的运行状态:
shellkubectl get risingwave
预期输出如下:
plainNAME RUNNING STORAGE(META) STORAGE(OBJECT) AGE risingwave-in-memory True Memory Memory 30s
ClusterIP
默认情况下,Operator会为前端组件创建类型为ClusterIP的服务,该服务无法从外部访问。因此,我们需要在Kubernetes内创建一个独立的PostgreSQL Pod,该Pod运行无限循环以便我们可以附加到其中。
可通过以下命令创建,或自行创建:
shellkubectl apply -f docs/manifests/psql/psql-console.yaml
之后会在Kubernetes中看到名为psql-console的Pod运行,可通过以下命令附加到容器内执行命令:
shellkubectl exec -it psql-console bash
最后,在Pod内通过psql命令访问RisingWave:
shellpsql -h risingwave-in-memory-frontend -p 4567 -d dev -U root
NodePort
如果需要从Kubernetes中的节点(如EC2)连接RisingWave,可将服务类型设置为NodePort,并在节点上运行以下命令:
shellexport RISINGWAVE_NAME=risingwave-in-memory export RISINGWAVE_NAMESPACE=default export RISINGWAVE_HOST=`kubectl -n ${RISINGWAVE_NAMESPACE} get node -o jsonpath='{.items[0].status.addresses[?(@.type=="InternalIP")].address}'` export RISINGWAVE_PORT=`kubectl -n ${RISINGWAVE_NAMESPACE} get svc -l risingwave/name=${RISINGWAVE_NAME},risingwave/component=frontend -o jsonpath='{.items[0].spec.ports[0].nodePort}'` psql -h ${RISINGWAVE_HOST} -p ${RISINGWAVE_PORT} -d dev -U root
配置示例:
yamlex# ... spec: global: serviceType: NodePort # ...
Load***
对于EKS/GCP等云厂商提供的Kubernetes集群,可通过设置服务类型为LoadBalancer,使用云负载均衡器将服务暴露到公网。配置如下:
yamlex# ... spec: global: serviceType: LoadBalancer # ...
之后可通过以下命令连接RisingWave:
shellexport RISINGWAVE_NAME=risingwave-in-memory export RISINGWAVE_NAMESPACE=default export RISINGWAVE_HOST=`kubectl -n ${RISINGWAVE_NAMESPACE} get svc -l risingwave/name=${RISINGWAVE_NAME},risingwave/component=frontend -o jsonpath='{.items[0].status.loadBalancer.ingress[0].ip}'` export RISINGWAVE_PORT=`kubectl -n ${RISINGWAVE_NAMESPACE} get svc -l risingwave/name=${RISINGWAVE_NAME},risingwave/component=frontend -o jsonpath='{.items[0].spec.ports[0].port}'` psql -h ${RISINGWAVE_HOST} -p ${RISINGWAVE_PORT} -d dev -U root
目前内存存储仅支持测试用途,强烈不建议用于其他场景。可通过以下配置启用内存元数据和对象存储:
yamlex#... spec: storages: meta: memory: true object: memory: true #...
推荐使用https://etcd.io/%E5%AD%98%E5%82%A8%E5%85%83%E6%95%B0%E6%8D%AE%E3%80%82%E5%8F%AF%E9%80%9A%E8%BF%87%E4%BB%A5%E4%B8%8B%E6%96%B9%E5%BC%8F%E6%8C%87%E5%AE%9A%E8%A6%81%E4%BD%BF%E7%94%A8%E7%9A%84%60etcd%60%E8%BF%9E%E6%8E%A5%E4%BF%A1%E6%81%AF%EF%BC%9A
yamlex#... spec: storages: meta: etcd: endpoint: risingwave-etcd:2388 secret: etcd-credentials # 可选,为空表示不启用认证 #...
参见docs/manifests/risingwave/risingwave-etcd-minio.yaml了解如何部署使用etcd作为元数据存储的简单RisingWave实例。
支持使用MinIO作为对象存储。详情参见docs/manifests/risingwave/risingwave-etcd-minio.yaml,YAML结构如下:
yamlex#... spec: storages: object: minio: secret: minio-credentials endpoint: minio-endpoint:2388 bucket: hummock001 #...
支持使用AWS S3作为对象存储。请按照以下步骤操作,详情参见docs/manifests/risingwave/risingwave-etcd-s3.yaml:
首先,创建名为s3-credentials的Secret:
shellkubectl create secret generic s3-credentials --from-literal AccessKeyID=${ACCESS_KEY} --from-literal SecretAccessKey=${SECRET_ACCESS_KEY} --from-literal Region=${AWS_REGION}
然后,在控制台创建一个存储桶,例如hummock001。
最后,在YAML中指定S3作为对象存储:
yamlex#... spec: storages: object: s3: secret: s3-credentials bucket: hummock001 #...
如需监控Kubernetes中运行的RisingWave,请参见监控指南获取更多详情。
RisingWave Operator基于Apache License 2.0开发,更多信息请参见LICENSE。
感谢您对本项目的贡献兴趣!更多信息请参见贡献与开发指南。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务