如何在OpenShift中重启pod?

时间:2018-03-29 17:58:14

标签: openshift

我在正在运行的pod中更新了一个文件(用于调试输出),但是没有得到识别。我打算重新启动它以获取它,但我只看到oc stop而不是oc startoc restart。如何强制刷新pod中的文件?

我在想它可能是Ruby的东西(比如PHP中的opcache)。但想到重新启动pod会处理它。只是无法弄清楚如何重新启动一个吊舱。

5 个答案:

答案 0 :(得分:5)

您需要在部署配置中进行更改,但不要在pod中进行更改。因为OpenShift将pod视为不可变的;在运行时无法对pod定义进行更改。 https://docs.openshift.com/enterprise/3.0/architecture/core_concepts/pods_and_services.html#pods

如果您在部署配置中进行了一些更改并保存,则pod将重新启动并且您的更改将生效:

oc edit dc "deploy-config-example"

如果您在卷或配置文件中更改某些内容,则需要删除pod以重新启动:

oc delete pod "name-of-your-pod"

pod将重启。或者更好的方法是运行以下命令来触发新部署:

oc rollout latest "deploy-config-example"

使用oc rollout会更好,因为如果你有一个缩放的应用程序,它会重新部署所有pod,而你不需要识别每个pod并删除它。

答案 1 :(得分:5)

感谢Noam Manos的解决方案。

我在Openshift中使用了“应用程序控制台”。我导航到“应用程序-部署-#3”(检查您的活动部署),以查看带有上下箭头的广告连播。目前,我有1个Pod正在运行。因此,我单击了向下箭头以缩小到0个窗格。然后,我点击了向上箭头以放大到1个窗格。

答案 2 :(得分:1)

按照以下步骤

  1. 登录以打开班次
  2. 单击“监视器”选项卡
  3. 选择要为其重新启动Pod的组件
  4. 点击操作下拉菜单(右上角)
  5. 删除现有吊舱
  6. 新生成的广告连播。

答案 3 :(得分:1)

如果你想使用 GUI 来做:

  1. 登录 ocp
  2. 点击工作负载 -> 部署配置
  3. 找到您要重新启动的 Pod。
  4. 点击右侧的 3 个点。
  5. 点击开始发布。

如果你删除你的 pod,或者将它缩放到 0 和 1,你可能会失去一些客户端,因为你基本上是在停止和重新启动你的应用程序。但是在 rollout 中,您现有的 pod 会等待新的 pod 准备就绪,然后自行删除。所以我想推出比删除或缩放 0/1 更安全。

答案 4 :(得分:0)

您可以将部署规模缩小(到零),然后再扩大:

oc get deployments -n <your project> -o wide

oc get pods -n <your project> -o wide

oc scale --replicas=0 deployment/<your deployment> -n <your project>

oc scale --replicas=1 deployment/<your deployment> -n <your project>

watch oc get pods -n <your project> # wait until your deployment is up again