답변:
배포 및 ReplicationController는 상태 비 저장 사용을위한 것이며 다소 가볍습니다. StatefulSet 는 상태를 유지해야 할 때 사용됩니다. 따라서 후자 volumeClaimTemplates
는 영구 볼륨에 대한 / 클레임을 사용 하여 구성 요소가 다시 시작되는 동안 상태를 유지할 수 있도록합니다.
따라서 애플리케이션이 상태 저장이거나 Kubernetes 위에 상태 저장 스토리지를 배포하려는 경우 StatefulSet을 사용합니다.
애플리케이션이 상태 비 추적이거나 시작 중에 백엔드 시스템에서 상태를 구축 할 수있는 경우 배포를 사용합니다.
상태 저장 애플리케이션 실행에 대한 자세한 내용은 상태 저장 애플리케이션에 대한 2016 kubernetes의 블로그 항목 에서 찾을 수 있습니다.
deployment
노드 당 1 개 (데몬 셋), 복제본 또는 상태 저장 순서를 설정하는 간단한 사양으로 단일 구성 으로 접힐 수 있다는 데 동의합니다 .
배포- 모든 포드 복제본이 공유 하는 PersistentVolumeClaim 을 지정합니다 . 즉, 공유 볼륨입니다.
두 개 이상의 복제본 포드가있는 경우 백업 스토리지에는 분명히 ReadWriteMany 또는 ReadOnlyMany accessMode 가 있어야합니다 .
StatefulSet- 각 복제본 포드가 연결된 고유 한 PersistentVolumeClaim을 가져 오도록 volumeClaimTemplates를 지정 합니다. 즉, 공유 볼륨이 없습니다.
여기서 백업 저장소는 ReadWriteOnce accessMode를 가질 수 있습니다 .
StatefulSet은 클러스터에서 실행하는 데 유용합니다 (예 : Hadoop 클러스터, MySQL 클러스터). 여기서 각 노드에는 자체 스토리지가 있습니다.
TL; DR
배포는 상태 비 저장 애플리케이션을 배포하기위한 리소스입니다. PVC를 사용하는 경우 모든 복제본이 동일한 볼륨을 사용하고 어느 것도 자체 상태를 갖지 않습니다.
Statefulset은 Stateful 애플리케이션에 사용되며 포드의 각 복제본은 자체 상태를 가지며 자체 볼륨을 사용합니다.
DaemonSet은 포드가 클러스터의 모든 노드에서 실행되도록하는 컨트롤러입니다. 클러스터에서 노드가 추가 / 제거되면 DaemonSet이 자동으로 포드를 추가 / 삭제합니다.
Deployments, StatefulSets 및 Daemonsets 간의 자세한 차이점과 이러한 리소스 K8 : Deployments vs StatefulSets vs DaemonSets를 사용하여 샘플 애플리케이션을 배포하는 방법에 대해 작성했습니다 .
각 노드가 영구 상태 를 가져야하는 상태 저장 분산 애플리케이션과 함께 'StatefulSet'을 사용 합니다. StatefulSet은 구성 (복제본 = N)을 통해 상태 저장 애플리케이션 / 구성 요소에 대해 임의의 수의 노드를 구성하는 기능을 제공합니다.
상태 저장 분산 응용 프로그램에는 마스터-마스터와 마스터-슬레이브의 두 가지 종류가 있습니다. 마스터-마스터 구성의 모든 노드와 마스터-슬레이브 구성의 슬레이브 노드는 StatefulSet를 사용할 수 있습니다.
예 :
마스터-슬레이브-> Hadoop 클러스터의
데이터 노드 ( 슬레이브) 마스터-마스터-> Cassandra 클러스터의 데이터베이스 노드 (마스터-마스터)
StatefulSet의 각 포드 (복제본 / 노드)에는 고유하고 안정적인 네트워크 ID가 있습니다. 예를 들어 이름이 'cassandra'이고 복제본 노드 수가 N 인 Cassandra StatefulSet에서 각 Cassandra 포드 (노드)에는 다음이 포함됩니다.
참조 : https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/
반면에 '배포' 는 노드에 특별한 ID가 필요하지 않은 상태 비 저장 애플리케이션 / 서비스에 적합합니다 . 로드 밸런서는 선택한 모든 노드에 도달 할 수 있습니다. 모든 노드가 동일합니다. 배포는 구성 (복제본 = N)을 통해 임의의 노드를 생성하는 데 유용합니다.
StatefulSet와 배포의 차이점
StatefulSet는 특수 배포와 동일합니다. StatefulSet의 각 포드에는 클러스터의 다른 구성원을 검색하는 데 사용할 수있는 안정적이고 고유 한 네트워크 식별자가 있습니다. StatefulSet의 이름이 Kafka이면 첫 번째 포드는 Kafka-0, 두 번째 포드는 Kafka-1 등입니다. StatefulSet에 의해 제어되는 포드 복사의 시작 및 중지 시퀀스가 제어됩니다. n 번째 포드가 작동되면 첫 번째 N-1 포드가 이미 실행 중이고 준비 상태가 양호합니다. StatefulSet의 포드는 PV 또는 PVC로 구현 된 안정적인 영구 저장소 볼륨을 사용합니다. 포드를 삭제할 때 StatefulSet와 연결된 스토리지 볼륨은 기본적으로 삭제되지 않습니다 (데이터 보안을 위해). StatefulSet은 PV 볼륨에 바인딩되도록 바인딩됩니다. 포드 상태 데이터를 저장하는 데 사용되며 해당 헤드리스 서비스에 속하는 것으로 선언 된 헤드리스 서비스와 함께 사용됩니다.