TOC
介绍
kube-rs目前是 CNCF 的沙箱项目,有一个官方的 controller 实现示例controller-rs.
还有一个 Rust 实现的 Operator 框架相关的项目是krator,Rust已经开始在云原生领域开始发力,前景我是很看好的.
本文会以查看 pod 的 log 为例,看看在 rust 的客户端中的代码是怎样的.
伪代码讲解
初始化客户端
let client = Client::try_default().await?;
拿到namespace下的所有pod
let pods: Api<Pod> = Api::namespaced(client, &namespace);
拿到pod中对应容器的日志
let mut logs = pods
.log_stream(&mypod, &LogParams {
container: Some("container".to_owned()), //指定容器名称
follow: true, //是否持续监听日志
tail_lines: Some(1), //tail 行数
..LogParams::default()
})
.await?
.boxed();
查看日志
while let Some(line) = logs.try_next().await? {
println!("{:?}", String::from_utf8_lossy(&line));
}
完整的例子在log_stream.rs
总结
虽然kube-rs
在最近才进入 CNCF,但是其实已经被不少项目正式采用了,例如 CNCF 中的krator、krustlet以及 linkerd2 中的policy-controller.完整的项目采用列表可以在kube-rs 采用者找到.
微信公众号
扫描下面的二维码关注我们的微信公众号,第一时间查看最新内容。同时也可以关注我的Github,看看我都在了解什么技术,在页面底部可以找到我的Github。