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 在 日期和时间
3,990 每月下载量
22KB
257 行
Rust中的Kubernetes领导者选举
此库为Kubernetes工作负载提供简单的领导者选举。
[dependencies]
kube-leader-election = "0.34.0"
示例
在Kubernetes中获取名为 some-operator-lock
的 Lease
的领导权,在 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
锁定,类似于 client-go的leaderelection
Kubernetes Lease
锁定
一种非常基本的领导者选举形式,没有围栏,即只有当您的应用程序可以容忍短时间内多个副本充当领导者时才使用此功能。
此实现使用Kubernetes API组 coordination.k8s.io
中的 Lease
资源,由领先副本锁定并持续更新。租户以及所有候选者都使用时间戳来确定是否可以获得租约。因此,此实现对集群内的日期时间偏移量很敏感。
只有在使用此实现时,您才了解其缺点,并且您的负载可以容忍这些缺点。
贡献
欢迎提交拉取请求。对于主要更改,请首先打开一个问题来讨论您想要更改的内容。
请确保根据需要更新测试。
许可证
依赖项
~66MB
~1M SLoC