Kubernetes Lease, 클러스터 리더 선출 로직
Kubernetes에서 Lease는 주로 리더 선출(leader election)과 관련된 기능으로 사용되며, 특정 리소스에 대한 임대 기간을 설정하여 어느 한 노드나 인스턴스가 리더 역할을 맡을 수 있게 합니다. 리더 선출은 분산 시스템에서 중요한 개념이며, Kubernetes에서는 이를 통해 안정적인 클러스터 관리와 동기화가 가능합니다.
Lease의 주요 개념
Lease 리소스
- Lease는 Kubernetes의 Coordination API를 통해 제공되며, 클러스터 내에서 리더 선출과 같은 작업을 할 때 Lease 객체를 사용합니다.
Lease
는 특정 리소스에 대해 일종의 임대 계약을 맺는 것과 같으며, 리더가 정해진 시간 동안 리더 역할을 할 수 있도록 보장합니다.
Lease의 사용 시나리오
- 리더 선출(Leader Election): 다수의 노드나 파드 중 하나가 리더가 되어 작업을 조율해야 할 때, Lease는 리더가 되기 위한 권리를 부여하고, 리더의 지속 시간을 관리합니다.
- 임대 갱신: 리더가 임대 기간을 갱신하면 해당 리더가 계속해서 리더 역할을 수행할 수 있습니다. 만약 갱신하지 않으면 다른 노드나 파드가 리더가 될 수 있습니다.
Lease의 구성 요소
- HolderIdentity: Lease를 소유한 노드나 파드의 ID입니다.
- LeaseDurationSeconds: Lease의 유효 기간을 초 단위로 나타냅니다. 이 기간 동안 Lease 소유자는 리더 역할을 유지합니다.
- RenewTime: Lease가 마지막으로 갱신된 시간입니다.
- LeaseTransitions: Lease 소유자가 변경된 횟수를 기록합니다.
예시 Lease 리소스 YAML
apiVersion: coordination.k8s.io/v1
kind: Lease
metadata:
name: my-lease
namespace: default
spec:
holderIdentity: "my-node-1"
leaseDurationSeconds: 15
acquireTime: "2024-09-10T12:00:00Z"
renewTime: "2024-09-10T12:00:05Z"
leaseTransitions: 3
- holderIdentity: 현재 Lease를 가지고 있는 엔티티(노드, 파드 등).
- leaseDurationSeconds: Lease의 임대 기간입니다. 이 시간이 지나면 Lease는 만료될 수 있습니다.
- acquireTime: Lease가 처음 획득된 시간.
- renewTime: 마지막으로 Lease가 갱신된 시간.
리더 선출에서 Lease의 역할
리더 선출이 필요한 작업에서 Lease는 중요한 역할을 합니다. 예를 들어, 여러 개의 컨트롤러 중 하나가 리더가 되어 중요한 작업을 관리할 때, Lease를 사용하여 어느 노드가 리더가 될지를 결정하고, 그 리더가 지속적으로 Lease를 갱신하지 않으면 새로운 리더를 선출합니다.
이를 통해 Kubernetes는 고가용성과 신뢰성을 유지하며, 클러스터 내에서 동시성 문제를 해결하는 데 중요한 역할을 합니다.
댓글
댓글 쓰기