首页 > 解决方案 > 如何使用 initContainers 检查 cassandra 是否已启动并正在运行

问题描述

在我的 kubernetes 集群中,我有使用cassandra:4.0图像的 cassandra statefulset。我希望我的应用程序 pod 等待 cassandra 首先启动并运行。

我想这可以通过添加initContainers应用程序 pod 部署来完成。initContainer 将检查 cassandra 的状态,从而阻止应用程序 pod 启动,直到它确保 cassandra 的可用性。

我不知道如何创建这样的 initContainer 来检查 cassandra statefulset 的状态,我在网上查过但没有找到任何与 cassandra 相关的示例。

任何帮助将不胜感激。

注意:我没有使用实际的 cassandra 图像,而不是这个示例之一 ( gcr.io/google-samples/cassandra:v13)

标签: kubernetescassandra

解决方案


您可以使用 shell 单行命令等待创建 cassandra 服务,例如:

for i in {1..100}; do sleep 1; if dig cassandraservice; then exit 0; fi; done; exit 1

参考:https ://kubernetes.io/docs/concepts/workloads/pods/init-containers/


推荐阅读