[−][src]Crate kubelet
A crate for building custom Kubernetes kubelets.
The crate provides the [Provider
] trait for declaring a Kubelet backend
as well as a the Kubelet
type which takes a [Provider
] and runs
a Kubelet server.
Example
use kubelet::Kubelet; use kubelet::config::Config; use kubelet::pod::Pod; use kubelet::provider::Provider; use kubelet::state::{Stub, AsyncDrop}; // Create some type that will act as your provider struct MyProvider; // Track pod state amongst pod state handlers. struct PodState; #[async_trait::async_trait] impl AsyncDrop for PodState { async fn async_drop(self) {} } // Implement the `Provider` trait for that type #[async_trait::async_trait] impl Provider for MyProvider { const ARCH: &'static str = "my-arch"; type InitialState = Stub; type TerminatedState = Stub; type PodState = PodState; async fn initialize_pod_state(&self, _pod: &Pod) -> anyhow::Result<Self::PodState> { Ok(PodState) } async fn logs(&self, namespace: String, pod: String, container: String, sender: kubelet::log::Sender) -> anyhow::Result<()> { todo!() } } async { // Instantiate your provider type let provider = MyProvider; // Load a kubernetes configuration let kubeconfig = kube::Config::infer().await.unwrap(); // Get a configuration for the Kubelet let kubelet_config = Config::default(); // Instantiate the Kubelet let kubelet = Kubelet::new(provider, kubeconfig, kubelet_config).await.unwrap(); // Start the Kubelet and block on it kubelet.start().await.unwrap(); };
Modules
config | Configuration for a Kubelet |
container |
|
handle | A convenience handle type for providers |
log |
|
node |
|
pod |
|
provider | Traits and types needed to create backend providers for a Kubelet |
secret | Resolves image pull secrets |
state | Used to define a state machine of Pod states. |
store |
|
volume | A module for use in managing volumes in providers. Use of this module is not mandatory to create a Provider, but it does provide common implementation logic for supported volume providers. |
Structs
Kubelet | A Kubelet server backed by a given |
Functions
bootstrap | bootstrap the cluster with TLS certificates |