【问题标题】:Force restart of a pod inside OpenShift强制重启 OpenShift 中的 pod
【发布时间】:2021-10-15 06:43:20
【问题描述】:

我可以使用 OpenShift Client oc 强制重启 pod。我想看看例如oc describe $pod 中的哪些细节发生了变化,尤其是 whether hostname as displayed inside the pod changes

例如,从容器 (oc exec -it $pod bash) 内执行的 shell 中终止在 Dockerfiles ENTRYPOINT 脚本(在我的情况下为 postgres -D $PGDATA)中启动的进程是否合适?

我在一个没有管理员访问权限的 OpenShift (OpenShift Container Platform) 3.9 集群上。

【问题讨论】:

    标签: docker openshift


    【解决方案1】:

    我现在已经凭经验证实杀死容器的“根”进程(如问题中所述)显然可以达到目的。可以观察例如以这种方式重新启动 pod 会产生这些影响:(这假定为 pod 内的单个容器。)

    • oc get pod/$pod -o jsonpath='{$.status.startTime}:保持不变
    • oc exec -it $pod hostname:保持不变(等于 pod ID)
    • oc get pod/$pod -o jsonpath='{$.status.containerStatuses[0].state.running.startedAt}':变化(增加)
    • oc get pod/$pod -o jsonpath='{$.status.containerStatuses[0].restartCount}':增量

    【讨论】:

      【解决方案2】:

      AFAIK 没有办法简单地使用 oc restart pod mypod 之类的东西重新启动 pod,但是可以使用 scale 子命令来实现该效果 - 首先将部署扩展到 0,然后将其缩减回之前的数量复制品。由于手动检查声明的副本计数很乏味,因此为此目的定义短函数似乎很有用(如果 bash 是您的 shell,则可能将其放在 .bash_functions 中)。考虑一下:

      function oc-rescale-deployment {
          local -r deployment="${1:?Usage: ${FUNCNAME[0]} <deployment>}";
          local -r target="deployment/${deployment}";
          #-- Find the number of declared replicas.
          local -ri replicas=$(oc get "${target}" \
            -o go-template='{{range $key, $val := .spec}}{{if eq $key "replicas"}}{{$val}}{{"\n"}}{{end}}{{end}}');
      
          oc scale --replicas=0 "${target}" \
          && sleep 0.5s \
          && oc scale --replicas=${replicas} "${target}" \
          && oc wait pod \
            --selector app.kubernetes.io/name="${deployment}" \
            --for=condition=Ready;
      }
      
      alias oc-restart='oc-rescale-deployment';
      

      是否要等待 Pod 在重新缩放后准备好取决于您,但我在这里添加了它,因此您可以链接调用,例如:

      oc-restart myapp && curl http://myapp.in.the.cloud/hello
      

      【讨论】:

        【解决方案3】:

        你可以试试oc rollout 命令

        【讨论】:

        • 我同意(从 2021 年的角度来看)。
        猜你喜欢
        • 2016-06-15
        • 1970-01-01
        • 2022-01-09
        • 1970-01-01
        • 1970-01-01
        • 2020-04-05
        • 1970-01-01
        • 1970-01-01
        • 2018-02-13
        相关资源
        最近更新 更多