0

我正在尝试修改我的 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 条件。

4

1 回答 1

2

你不应该。

客户端在 -part 中写入所需的状态spec:而控制器则在status:-part 中写入。

于 2020-11-17T20:11:45.430 回答