![[Kubernetes] ReplicaSet 기본 개념](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FddInIe%2FbtsHqqv6MYa%2FAAAAAAAAAAAAAAAAAAAAAMfDo-J34oXjBl7GsGn4f9guZI0c4HLIpgj6HWDpE8mV%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DuXVRBvws17skVrqXioXWmpkMc94%253D)

K8S_OBJ_ReplicaSet
- ReplicaSet의 목적은 언제든지 실행되는 안정적인 복제본 Pod 세트를 유지하는 것입니다. 따라서 지정된 수의 동일한 Pod의 가용성을 보장하는 데 자주 사용됩니다.
ReplicaSet의 작동 방식
- ReplicaSet은 획득할 수 있는 Pod를 식별하는 방법을 지정하는 selector, 유지해야 하는 Pod 수를 나타내는 spec.replicas,
숫자를 충족하기 위해 생성해야 하는 새 Pod의 데이터를 지정하는 spec.template을 포함한 필드로 정의됩니다. ReplicaSet는 원하는 수에 도달하기 위해 필요에 따라 Pod를 생성 및 삭제하여 목적을 달성합니다. 새 Pod를 생성해야 할 때는 yaml파일에 정의된 spec.template 을 사용합니다. - ReplicaSet는 현재 object가 소유한 리소스를 지정하는 Pod의 Metadata.ownerReferences 필드를 통해 Pod에 연결됩니다. ReplicaSet이 획득한 모든 Pod는 ownerReferences 필드 내에 소유한 ReplicaSet의 식별 정보를 가지고 있습니다. 이 링크를 통해 ReplicaSet는 유지 관리 중인 Pod의 상태를 알고 그에 따라 계획을 세웁니다.
- ReplicaSet는 selector를 사용하여 획득할 새 Pod를 식별합니다. OwnerReference가 없는 Pod가 있거나 OwnerReference를 찾을 수 없을경우, ReplicaSet의 selector와 일치하면 해당 ReplicaSet에 의해 즉시 획득됩니다.
ReplicaSet을 사용해야 하는 경우
ReplicaSet은 특정 시간에 지정된 수의 Pod 복제본이 실행되도록 보장합니다. 그러나 Deployment는 ReplicaSet를 관리하고 다른 많은 유용한 기능과 함께 Pod에 대한 선언적 업데이트를 제공하는 더 높은 수준의 개념입니다. 따라서 사용자 지정 업데이트 오케스트레이션이 필요하지 않거나 업데이트가 전혀 필요하지 않은 경우가 아니면 ReplicaSet를 직접 사용하는 대신 Deployment를 사용하는 것이 좋습니다. 이는 실제로 ReplicaSet object를 조작할 필요가 전혀 없다는 의미입니다.
ReplicaSet과 비슷한 오브젝트
Deployment(권장)
Deployment
ReplicaSet를 소유하고 선언적 서버 측 롤링 업데이트를 통해 ReplicaSet과 Pod를 업데이트할 수 있는 object입니다. ReplicaSet은 독립적으로 사용할 수 있지만 현재는 주로 Deployment에서 Pod 생성, 삭제, 업데이트를 조정하는 메커니즘으로 사용됩니다. Deployment를 사용하면 Deployment가 생성하는 ReplicaSet 관리에 대해 걱정할 필요가 없습니다. Deployment는 ReplicaSet를 소유하고 관리합니다. 따라서 ReplicaSet을 원할 때는 Deployment를 사용하는 것이 좋습니다.
베어 Pod
ReplicaSet은 사용자가 직접 Pod를 생성한 경우와 달리 노드 장애나 커널 업그레이드 등 방해가 되는 노드 유지 관리 등 어떤 이유로든 삭제되거나 종료되는 Pod를 대체합니다. 이러한 이유로 애플리케이션에 Pod가 하나만 필요한 경우에도 ReplicaSet을 사용하는 것이 좋습니다. 프로세스 감독자와 유사하게 생각하면 단일 노드의 개별 프로세스 대신 여러 노드에 걸쳐 여러 Pod를 감독한다는 점만 다릅니다. ReplicaSet은 Kubelet과 같은 노드의 일부 에이전트에 로컬 컨테이너 다시 시작을 위임합니다.
Job
Job
자체적으로 종료될 것으로 예상되는 포드에는 ReplicaSet대신 Job 을 사용하는것이 좋습니다.
Daemonset
데몬셋 은 모든(또는 일부) 노드가 파드의 사본을 실행하도록 합니다. 노드가 클러스터에 추가되면 파드도 추가됩니다. 노드가 클러스터에서 제거되면 해당 파드는 가비지(garbage)로 수집됩니다. 데몬셋을 삭제하면 데몬셋이 생성한 파드들이 정리됩니다. Pod를 복제한다는 개념은 ReplicaSet 과 비슷하지만 노드마다 Pod를 실행해야하는 경우 Daemonset이 유리할 수 있습니다.
ReplicasetController
ReplicaSets는 ReplicationControllers 의 후속 제품입니다 . 두 가지 모두 동일한 목적으로 사용되며 유사하게 작동합니다. 단, ReplicationController는 레이블 사용자 가이드 에 설명된 대로 세트 기반 selector 요구 사항을 지원하지 않습니다 . 따라서 ReplicaSet이 ReplicationController보다 선호됩니다.
포스팅이 좋았다면 "좋아요" 또는 "구독" 해주세요!