Lease trong Kubernetes là gì?

731
22-03-2026
Lease trong Kubernetes là gì?

Lease là một đối tượng đặc biệt trong Kubernetes, đại diện cho quyền sở hữu tạm thời một tài nguyên.

Định nghĩa kỹ thuật:

Lease là một đối tượng API trong nhóm API coordination.k8s.io/v1. Nó lưu trữ một bản ghi với các trường như:

holderIdentity (Ai đang giữ lease)

leaseDurationSeconds (Thời gian lease có hiệu lực)

renewTime (Thời điểm gia hạn lần cuối)

Đây là cấu trúc của một đối tượng Lease trong YAML:

apiVersion: coordination.k8s.io/v1

kind: Lease

metadata:

name: my-lease

namespace: default

spec:

holderIdentity: "worker-node-2"

leaseDurationSeconds: 15

Lệnh này báo cho Kubernetes biết:

“worker-node-2 giữ quyền sử dụng trong 15 giây. Nếu không gia hạn trong thời gian đó, quyền sử dụng sẽ được dành cho người khác.”

Một ví dụ thực tế đơn giản:

Hãy tưởng tượng bạn điều hành một xưởng sửa chữa ô tô bận rộn. Bạn có một máy chẩn đoán, nhưng nhiều thợ máy cần sử dụng nó.

Vì vậy, bạn có một bảng đăng ký, nơi thợ máy viết tên và thời gian họ bắt đầu sử dụng.

Mechanic viết tên → Quyền sử dụng được cấp

Khi tiếp tục cập nhật thời gian → Quyền sử dụng được gia hạn

Khi rời đi mà không cập nhật → Quyền sử dụng hết hạn và người khác tiếp quản

Nếu không có bảng này?

Hai mechanic có thể cắm máy cùng một lúc → hỗn loạn và cháy dây điện.

Đây chính là Kubernetes không cần đến quyền sử dụng (Lease).

Tại sao Lease lại quan trọng?

Lease đóng vai trò quan trọng trong việc ngăn ngừa xung đột và downtime. Chúng đảm bảo chỉ có một thành phần kiểm soát một công việc nào đó tại một thời điểm. Nếu không có Lease, Kubernetes sẽ đầy rẫy các điều kiện tranh chấp và xung đột.

Tại sao bạn nên quan tâm với tư cách là một kỹ sư Kubernetes?

Lease giúp:

Tính khả dụng cao

Chuyển đổi dự phòng và lựa chọn leader

Theo dõi trạng thái hoạt động của node

Tránh trùng lặp công việc/xử lý

Độ tin cậy tốt hơn trong các hệ thống phân tán

Nếu bạn muốn hiểu cách Kubernetes tự động vận hành, bạn cần hiểu về Lease.

Lease được sử dụng ở đâu trong Kubernetes?

1. Tại Node

Mỗi node cần chứng minh nó đang hoạt động. Trước đây, điều này được thực hiện thông qua các bản cập nhật NodeStatus, nhưng điều đó gây tải cho máy chủ API.

Lease đã thay đổi điều đó.

Giờ đây, các node tự động cập nhật đối tượng Lease để hiển thị trạng thái hoạt động của chúng.

Giảm tải API

Phát hiện lỗi node nhanh hơn

Khả năng mở rộng tốt hơn

2. Lựa chọn leader

Khi nhiều replica của cùng một controller đang chạy, chỉ một replica được phép đóng vai trò leader.

Được sử dụng trong:

Kube-controller-manager

Kube-scheduler

Các bộ điều khiển và Operator tùy chỉnh

Ví dụ:

Ba controller cố gắng quản lý các tác vụ. Chỉ một controller nhận được Lease và trở thành leader. Nếu nó gặp sự cố, Lease sẽ hết hạn và một controller khác sẽ tiếp quản.

Không cần sự can thiệp của con người. Không có rắc rối.

3. Custom Applications

Bạn cũng có thể sử dụng Leases.

Nếu bạn xây dựng một microservice mà chỉ cần một instance thực hiện một công việc (như gửi email hoặc xử lý thanh toán), hãy sử dụng Leases.

Tạo và Kiểm Tra Leases

Tạo một Lease

kubectl apply -f my-lease.yaml

Kiểm tra xem Lease còn active hay không.

kubectl get lease my-lease -n default -o yaml

Buộc Remove Lease

Hữu ích trong các tình huống khó xử lý với leader:

kubectl delete lease my-lease -n default

Chỉ thực hiện việc này nếu bạn chắc chắn owner đã không còn. 

Ví dụ thực tế

Giả sử bạn có một tác vụ xử lý hàng loạt gửi hóa đơn mỗi đêm. Bạn chạy 3 phiên bản để dự phòng.

Sử dụng Lease để chỉ MỘT phiên bản gửi hóa đơn, trong khi các phiên bản khác chờ.

Nếu phiên bản đang hoạt động gặp sự cố, phiên bản khác sẽ tiếp quản Lease và tiếp tục.

Không có hóa đơn trùng lặp. Không có khách hàng khó chịu.

Nếu bạn hiểu về Lease, bạn đã tiến gần hơn một bước đến việc hiểu nội tại của Kubernetes — và đó chính là nơi “phép màu” thực sự diễn ra.

Lease âm thầm quản lý việc điều phối (coordination), chuyển đổi dự phòng (failover) và theo dõi “nhịp tim” (heartbeat) trong toàn bộ Kubernetes.

Nếu bạn hiểu Lease, bạn sẽ hiểu vì sao Kubernetes không trở nên “hỗn loạn” khi chịu áp lực lớn.

SHARE