2017-03-01 4 views
4

kubernetes를 사용하는 배포 용 도커 이미지와 해당 yaml 파일이 있습니다. 우리가 만든 응용 프로그램은 akka-http와 함께 scala에 있습니다. 우리는 akka 클러스터를 사용했습니다. pod ip를 사용하는 응용 프로그램 코드에서 사용되는 구성 파일에 특정 변수 (이 경우에는 시드 노드 - akka 클러스터)가 있습니다. 그러나 배치가 완료되지 않으면 우리는 포드 IP를 얻지 못할 것입니다. 문제를 어떻게 해결해야합니까? 환경 변수가 도움이 될까요? 그렇다면 어떻게됩니까?Kubernetes - Akka 클러스터링 배포

더 구체적으로 말하면, 도커 이미지가 컨테이너의 컨테이너에 배치되고 컨테이너가 시작될 때, 팝업 IP가 이미 할당됩니다. 따라서 프로세스가 컨테이너에서 시작되기 전에 코드 또는 구성 파일에 프로그래밍 방식으로 또는 다른 방법으로 포드 ips를 구성 할 수 있습니까? 우리는 포드가 필요 대신 "127.0.0.1"로 akka.remote.netty.tcp.hostname있는의,

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 
} 

위의 파일에서 : 참고로

, 이것은 우리의 구성 파일입니다 -ip.

seed-nodes = [ 
      "akka.tcp://[email protected]:3000", 
      "akka.tcp://[email protected]:3001", 
     ], 

우리가 어떻게 그렇게 할 수 있습니다 : 그래서, 우리는 씨앗 노드에서 사용할 수있는? 미리 감사드립니다.

+0

이 위대한 blogpost 체크 아웃 http://paoloambrosio.net/2016/12/14/akka-location-transparency.html 및 관련 GitHub 데모 프로젝트 https://github.com/paoloambrosio/experiments/ 트리/akka-location-transparency. 해결 방법은 도커 이미지 부팅 중에 시드 호스트 이름을 검색하고 내보내는 것입니다. –

답변

3

나는 아주 비슷한 것을 시도했다. 상태 저장 세트 Kubernetes-Stateful sets을 사용하면됩니다. 상태 저장 세트에는 명명 규칙이 있으며 그에 따라 포드 이름이 지정됩니다. 링크에서 자세한 내용을 읽을 수 있습니다. 이 방법을 사용하면 시드 노드의 값을 하드 코드 할 수 있습니다. 포드의 이름 지정 방법을 알고 있기 때문입니다. 그러나 스테이트 풀 세트는 롤링 업데이트를 지원하지 않습니다 (주된 이유는 주로 그렇게 설계 되었기 때문입니다).이 기사는 단계별로 훌륭한 설명을 제공합니다 : stateful set - akka clustering 이 기사는 모든 것을 함께 설명합니다. 여기서 단계를 복사합니다. 희망이 도움이

+0

링크를 찾은 것 같습니다. 링크에서 접근 방식을 시도합니다. –

+1

이것은 2017이며, akka 클러스터는 이상한 방식으로 구현되었습니다. 근본적으로 kubernetes에서 작동하도록 해킹해야하며, 그렇게하더라도 멋진 롤링 업데이트를 얻지 못합니다. 특색. 이게 나에게 잘못 보이니? – gerasalus

+0

@gerasalus - 예, 이상하게 보입니다.하지만 상태 기반 세트가 설계된 방식 때문이라고 생각합니다. 같은 주제로 진행되는 토론이있는 것 같습니다. https://github.com/kubernetes/kubernetes/issues/37566 – Tarun