如果在Kubernetes中重新启动所有POD而不重新启动客户端应用程序,Cassandra驱动程序如何更新contactPoints?

如果在Kubernetes中重新启动所有POD而不重新启动客户端应用程序,Cassandra驱动程序如何更新contactPoints?,kubernetes,cassandra,datastax-java-driver,spring-data-cassandra,kubernetes-statefulset,Kubernetes,Cassandra,Datastax Java Driver,Spring Data Cassandra,Kubernetes Statefulset,我们创建了一个statefolset&headless服务。我们可以通过两种方式在应用程序中定义对等IP: 在contactPoints中使用“cassandra headless service name” 从headless服务获取对等ip&外部化对等ip,并在初始化连接时读取这些ip。 到现在为止,一直都还不错。 如果重新启动一个/部分POD,而不是全部POD,上述操作将起作用。在这种情况下,驱动程序将自动更新新的IP 但是,在完全停机的情况下,这将如何工作?如果所有的POD都关闭了&当它

我们创建了一个statefolset&headless服务。我们可以通过两种方式在应用程序中定义对等IP:

  • 在contactPoints中使用“cassandra headless service name”
  • 从headless服务获取对等ip&外部化对等ip,并在初始化连接时读取这些ip。 到现在为止,一直都还不错。 如果重新启动一个/部分POD,而不是全部POD,上述操作将起作用。在这种情况下,驱动程序将自动更新新的IP

  • 但是,在完全停机的情况下,这将如何工作?如果所有的POD都关闭了&当它们返回时,如果所有的POD ip都更改了(Kubernetes中的ip可能会更改),应用程序将如何连接到Cassandra?

    在完全中断的情况下,您是对的,应用程序将不会有集群的任何有效端点。在应用程序连接到Cassandra之前,需要刷新(并重新启动应用程序)

    实际上,我们编写了一个RESTful API,可以通过集群查询当前的有效端点。这样,应用程序团队就可以随时找到集群的当前IP。我建议做类似的事情