首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes - Akka集群部署

Kubernetes - Akka集群部署
EN

Stack Overflow用户
提问于 2017-03-01 18:10:40
回答 2查看 2.2K关注 0票数 5

对于使用kubernetes的部署,我们有一个docker镜像和一个相应的yaml文件。我们构建的应用程序是在scala中使用akka-http构建的。我们已经使用了akka-cluster。我们在配置文件中有一个特定的变量(在本例中为seed-nodes- akka集群),该变量在使用pod ip的应用程序代码中使用。但是,除非部署完成,否则我们不会获得pod ip。我们应该如何着手解决这个问题?环境变量会有帮助吗?如果有,会有什么帮助?

更具体地说,将docker镜像部署到pod中的容器中,当容器启动时,已经分配了pod ip。那么,在容器中的进程开始之前,我们是否可以在代码或配置文件中以编程方式或以其他方式配置pod ips?

作为参考,下面是我们的配置文件:

代码语言:javascript
复制
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
}

在上面的文件中,我们需要pod-ip而不是akka.remote.netty.tcp.hostname作为"127.0.0.1“。因此,我们可以在种子节点中使用它:

代码语言:javascript
复制
seed-nodes = [
          "akka.tcp://our-system@hostname:3000",
          "akka.tcp://our-system@hostname:3001",
        ],

如何做到这一点呢?提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-03-14 14:26:08

我已经尝试过非常类似的东西。你能做的就是使用有状态集Kubernetes-Stateful sets。有状态集有一个命名约定,pods将相应地命名-您可以在链接中了解更多信息。这样,您就可以对种子节点的值进行硬编码,因为您知道pod将如何命名。但是,它们有一个缺点,有状态集还不支持滚动更新(主要是因为它们是这样设计的)。这篇文章有一个很好的逐步解释:stateful set - akka clustering这篇文章一起解释了所有的事情-所以在这里发布一个链接而不是复制步骤。希望这能有所帮助

票数 3
EN

Stack Overflow用户

发布于 2019-01-05 00:41:09

从2018年开始,在kubernetes中初始化Akka集群的理想方式是akka-management

它使用Kubernetes API来获取所有正在运行的pod的列表,并引导集群。不需要配置任何种子节点。

它还会提供就绪检查,直到pod加入群集为止。还有一张有效的支票。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42528817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档