2016-08-09 5 views
6

Kubernetes에 익숙해졌으며 Kubernetes에서 상태 저장 서비스를 배포하기위한 간단한 솔루션을 찾지 못했습니다.Kubernetes에서 상태 저장 응용 프로그램 배포

  • 모든 포드 접점 부하가 (내가 불운의 경우 분할 뇌 두려워 균형 수 없습니다 (다른 포드 IP를 목록)로 부트 스트랩되어야한다 : 최악의 경우로드 -에서 밸런서는 모든 노드를 모든 노드로로드 균형을 조정하여 하나의 노드로 구성된 클러스터를 구성 할 수 있습니다.)
  • 모든 노드는 영원히 수동으로 액세스해야하는 영속 저장소가 있어야합니다 (예 : 영사의 peers.json)
  • 모든 창은 재구성 가능해야합니다. 영사 클러스터로 무언가를하는 것을 잊어 버린 경우 처음부터 다시 빌드하면 중단 시간이 발생합니다. kubernetes가 이것을 막는 경우, 나에게 말해줘. 나는 아직도 배포 기법에 익숙하지 않다.
  • 새로 구성된 인스턴스로 서비스 클러스터를 동적으로 늘린 다음 오래된 노드를 제거하면 매우 바람직하지 않을 수 있습니다 (저는 영사 전문가가 아니지만 영사 클러스터에서 스플릿 블로 보호를 떨어 뜨리는 내 관점에서).

AFAIK 가장 적합한 것은 Pet Set이지만 아직 알파 상태이며 완전히 삭제할 수 있습니다. 또한 Pet Set 레크리에이션에서 생존하기 위해 지속되는 볼륨을 관리하는 방법을 알지 못합니다. 또 다른 옵션은 서비스 배포를 부트 스트랩 노드 배포, 부트 스트랩 노드 서비스 및 모든 노드 노드 배포로 분할하여 부트 스트랩 노드 서비스를 접점으로 사용할 수있게하는 것입니다 (완전히 안전하지는 않습니다.).

이 사례에 대한 인기있는 접근 방식에는 무엇이 있으며 무엇이 장단점이 있습니까?

+1

없습니다. K8은 아직 준비되지 않았습니다. PetSets는 답이지만 갈 길이 멀다. – Drew

+0

K8이이 문제에 대비할 지 확신 할 수 없습니다. Kubernetes에 관한 아이디어는 모든 것이 임시적이라는 것입니다. PetSets는 부분적인 솔루션을 제공 할 수 있지만이 경우 Kubernetes를 사용하여 얻을 수있는 것이 실제로는 없습니다. – 3ocene

답변

1

Kubernetes 클러스터의 Stateful 클러스터에있는 개수의 포드를보고있는 경우 PetSets (StatefulSets는 지금 부름 받았다고 생각합니다)가 대답입니다 ... 또는 포드 당 서비스를 정의 할 수 있습니다 똑같다.

포드가 다른 포드의 IP를 인식하려면 레이블이 붙은 IP 목록을 제공하는 헤드리스 서비스를 사용할 수 있습니다.

저장소의 경우 emptyDir을 사용하는 경우 로컬 저장소가 있지만 포드를 제거/다시 예약 할 때 잃게됩니다.

나는 Kubernetes에서 Zookeeper를 사용하지만 설치하는 데 약간의 어려움이 있지만 Zookeeper는 노드가 변경 될 때 클러스터를 재구성 할 수있는 '재구성'API를 제공하므로 시작시 클러스터를 다시 정의하는 것이 매우 쉽습니다 포드가 재조정 될 때 새 노드의 영사가 같은 유형의 기능을 갖고 있는지 확실하지 않지만 아마 그렇습니다.