我們有一個docker鏡像和一個相應的yaml文件,用於使用kubernetes進行部署。我們建立的應用程序是與akka-http的scala。我們使用了akka集羣。在我們的應用代碼中使用的配置文件中,我們有一個特殊的變量(我們的例子中的種子節點 - akka集羣),它使用pod ip。但是,除非部署完成,否則我們不會獲得pod ip。我們應該如何解決這個問題?如果是的話,環境變量會有幫助嗎?Kubernetes - Akka集羣部署
更具體地說,一旦泊塢窗圖像部署在容器中的容器中,並且容器啓動時,Pod容器已經被分配。那麼,我們可以在容器中的流程開始之前以編程方式或以其他方式在代碼或配置文件中配置pod ips嗎?
以供參考,這是我們的配置文件:
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://[email protected]:3000",
"akka.tcp://[email protected]: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
}
在上面的文件,而不必akka.remote.netty.tcp.hostname爲「127.0.0.1」,我們需要有莢-ip。
seed-nodes = [
"akka.tcp://[email protected]:3000",
"akka.tcp://[email protected]:3001",
],
我們怎麼可以這樣做: 所以,我們可以作爲種子節點使用它? 在此先感謝。
看看這個偉大的博文http://paoloambrosio.net/2016/12/14/akka-location-transparency.html及其相關的GitHub演示項目https://github.com/paoloambrosio/experiments/樹/阿卡位置透明度。解決方案是在Docker鏡像啓動過程中運行發現並導出種子主機名。 –