diff --git a/Cargo.lock b/Cargo.lock
index 8ccb51dcd5..81b7f91b5b 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -3718,12 +3718,14 @@ dependencies = [
"anyhow",
"clap",
"env_logger 0.10.2",
+ "humantime",
"k8s-openapi",
"kube",
"libc",
"log",
"regex",
"rstest",
+ "semver",
"serde_json",
"serde_yaml 0.9.34+deprecated",
"serial_test 0.10.0",
diff --git a/Cargo.toml b/Cargo.toml
index e4744642ac..6b424d2e34 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -195,6 +195,7 @@ scan_fmt = "0.2.6"
scopeguard = "1.0.0"
serde = { version = "1.0.145", features = ["derive"] }
serde_json = "1.0.91"
+semver = "1.0"
serial_test = "0.10.0"
sha2 = "0.11.0"
slog = "2.5.2"
diff --git a/tools/packaging/kata-deploy/binary/Cargo.toml b/tools/packaging/kata-deploy/binary/Cargo.toml
index e8753922ce..a67eda5836 100644
--- a/tools/packaging/kata-deploy/binary/Cargo.toml
+++ b/tools/packaging/kata-deploy/binary/Cargo.toml
@@ -14,6 +14,7 @@ path = "src/main.rs"
anyhow.workspace = true
clap.workspace = true
env_logger = "0.10"
+humantime = "2.1.0"
k8s-openapi = { version = "0.26", default-features = false, features = [
"v1_33",
] }
@@ -32,6 +33,7 @@ kube = { version = "2.0", default-features = false, features = [
libc.workspace = true
log.workspace = true
regex.workspace = true
+semver.workspace = true
serde_json.workspace = true
serde_yaml = "0.9"
tar = "0.4.46"
diff --git a/tools/packaging/kata-deploy/binary/src/k8s/client.rs b/tools/packaging/kata-deploy/binary/src/k8s/client.rs
index e624b32d2e..b5c4504b81 100644
--- a/tools/packaging/kata-deploy/binary/src/k8s/client.rs
+++ b/tools/packaging/kata-deploy/binary/src/k8s/client.rs
@@ -7,7 +7,8 @@ use crate::config::Config;
use anyhow::{Context, Result};
use k8s_openapi::api::core::v1::Node;
use kube::{
- api::{Api, DeleteParams, DynamicObject, Patch, PatchParams},
+ api::{Api, DeleteParams, DynamicObject, GetParams, Patch, PatchParams},
+ core::Request,
discovery::ApiResource,
Client,
};
@@ -71,6 +72,25 @@ impl K8sClient {
.and_then(|labels| labels.get(key).cloned()))
}
+ pub async fn get_kubelet_runtime_request_timeout(&self) -> Result