快速认识kubernetes的rust客户端

Posted by 梁远鹏 on 2022-02-02 | 阅读 |,阅读约 1 分钟

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 中的kratorkrustlet以及 linkerd2 中的policy-controller.完整的项目采用列表可以在kube-rs 采用者找到.

微信公众号

扫描下面的二维码关注我们的微信公众号,第一时间查看最新内容。同时也可以关注我的Github,看看我都在了解什么技术,在页面底部可以找到我的Github。

wechat-qrcode