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。