Nag*_*sha 5 akka-cluster kubernetes akka-http
我们有一个docker映像和一个相应的yaml文件,用于使用kubernetes进行部署。我们构建的应用程序在带有akka-http的scala中。我们使用了akka集群。我们在使用Pod ip的应用程序代码中使用的配置文件中,有一个特定的变量(在我们的情况下为种子节点-akka群集)。但是,除非完成部署,否则我们不会获得Pod ip。我们应该如何解决这个问题?环境变量会有所帮助吗?
更具体地说,将docker映像部署在容器中的容器中之后,并且当容器启动时,容器IP已被分配。那么,在容器中开始该过程之前,我们可以通过编程方式或其他方式在代码或配置文件中配置Pod ip吗?
供参考,这是我们的配置文件:
akka {
actor {
provider = "akka.cluster.ClusterActorRefProvider"
}
remote {
log-remote-lifecycle-events = off
netty.tcp {
hostname = "127.0.0.1"
port = 0
}
}
cluster {
seed-nodes = [
"akka.tcp://our-system@127.0.0.1:3000",
"akka.tcp://our-system@127.0.0.1:3001",
],
metrics {
enabled = off
}
}
}
service {
validateTokenService {
ml.pubkey.path = "<filePath>"
}
ml_repository {
url = <url address>
}
replication.factor = 3
http.service.interface = "0.0.0.0"
http.service.port = 8080
}
Run Code Online (Sandbox Code Playgroud)
在上面的文件中,我们需要使用pod-ip来代替akka.remote.netty.tcp.hostname作为“ 127.0.0.1”。因此,我们可以在种子节点中将其用作:
seed-nodes = [
"akka.tcp://our-system@hostname:3000",
"akka.tcp://our-system@hostname:3001",
],
Run Code Online (Sandbox Code Playgroud)
我们该怎么做?提前致谢。
我尝试过非常相似的东西。您可以做的是使用有状态集Kubernetes-Stateful set。有状态集有一个命名约定,并且 Pod 将被相应地命名 - 您可以在链接中阅读有关该内容的更多信息。这样,您就可以对种子节点的值进行硬编码,因为您知道 Pod 将如何命名。但是,它们有一个缺点,有状态集还不支持滚动更新(主要是因为它们是这样设计的。)这篇文章一步一步有很好的解释:有状态集 - akka 集群 这篇文章一起解释了所有内容 - 所以发布一个链接而不是在此处复制步骤。希望这可以帮助
归档时间: |
|
查看次数: |
1768 次 |
最近记录: |