#kubernetes #workload #leader #election #lease #lock #leadership

kube-leader-election

Kubernetes工作负载的领导者选举实现

31个重大版本发布

0.34.0 2024年7月23日
0.32.0 2024年5月6日
0.30.0 2024年3月26日
0.28.0 2023年11月2日
0.1.2 2021年7月26日

#56日期和时间

Download history 1480/week @ 2024-04-26 1846/week @ 2024-05-03 886/week @ 2024-05-10 1065/week @ 2024-05-17 558/week @ 2024-05-24 601/week @ 2024-05-31 949/week @ 2024-06-07 1159/week @ 2024-06-14 389/week @ 2024-06-21 686/week @ 2024-06-28 618/week @ 2024-07-05 872/week @ 2024-07-12 1414/week @ 2024-07-19 850/week @ 2024-07-26 914/week @ 2024-08-02 658/week @ 2024-08-09

3,990 每月下载量

MIT 许可证

22KB
257

Rust中的Kubernetes领导者选举

CI workflow crates.io version License: MIT

此库为Kubernetes工作负载提供简单的领导者选举。

[dependencies]
kube-leader-election = "0.34.0"

示例

在Kubernetes中获取名为 some-operator-lockLease 的领导权,在 default 命名空间中,并承诺每15秒更新一次锁

let leadership = LeaseLock::new(
    kube::Client::try_default().await?,
    "default",
    LeaseLockParams {
        holder_id: "some-operator".into(),
        lease_name: "some-operator-lock".into(),
        lease_ttl: Duration::from_secs(15),
    },
);

// Run this in a background task every 5 seconds
// Share the result with the rest of your application; for example using Arc<AtomicBool>
// See https://github.com/hendrikmaus/kube-leader-election/blob/master/examples/shared-lease.rs
let lease = leadership.try_acquire_or_renew().await?;

log::info!("currently leading: {}", lease.acquired_lease);

请参阅 examples 了解可运行的用法演示。

功能

Kubernetes Lease 锁定

一种非常基本的领导者选举形式,没有围栏,即只有当您的应用程序可以容忍短时间内多个副本充当领导者时才使用此功能。

此实现使用Kubernetes API组 coordination.k8s.io 中的 Lease 资源,由领先副本锁定并持续更新。租户以及所有候选者都使用时间戳来确定是否可以获得租约。因此,此实现对集群内的日期时间偏移量很敏感。

只有在使用此实现时,您才了解其缺点,并且您的负载可以容忍这些缺点。

贡献

欢迎提交拉取请求。对于主要更改,请首先打开一个问题来讨论您想要更改的内容。

请确保根据需要更新测试。

许可证

MIT

依赖项

~66MB
~1M SLoC