我正在尝试修改我的 pod 的运行状态,由部署控制器通过命令行kubectl patch
和 k8s python 客户端 API 管理。他们似乎都没有工作
从命令行,我尝试了策略合并匹配和 JSON 合并补丁,但它们都不起作用。例如,我正在尝试修补 pod 条件以使该status
字段False
kubectl -n foo-ns patch pod foo-pod-18112 -p '{
"status": {
"conditions": [
{
"type": "PodScheduled",
"status": "False"
},
{
"type": "Ready",
"status": "False"
},
{
"type": "ContainersReady",
"status": "False"
},
{
"type": "Initialized",
"status": "False"
}
],
"phase": "Running"
}
}' --type merge
来自 python API
# definition of various pod states
ready_true = { "type": "Ready", "status": "True" }
ready_false = { "type": "Ready", "status": "False" }
scheduled_true = { "type": "PodScheduled", "status": "True" }
cont_ready_true = { "type": "ContainersReady", "status": "True" }
cont_ready_false = { "type": "ContainersReady", "status": "False" }
initialized_true = { "type": "Initialized", "status": "True" }
initialized_false = { "type": "Initialized", "status": "False" }
patch = {"status": { "conditions": [ready_false, initialized_false, cont_ready_false, scheduled_true ], "phase" : "Running" }}
p_status = v1.patch_namespaced_pod_status(podname, "default", body=patch)
在运行上面的代码片段时,我没有看到任何错误,并且响应p_status
中的所有 pod 条件都已修改为应用于 中patch
,但我没有看到来自 API 服务器的任何与此 pod 状态更改相关的事件。
可能是部署控制器正在回滚对工作配置的更改?我正在寻找修补 pod 条件的方法,并测试我的自定义控制器(与问题无关)是否能够看到这些新的 pod 条件。