我在正在运行的pod中更新了一个文件(用于调试输出),但是没有得到识别。我打算重新启动它以获取它,但我只看到oc stop
而不是oc start
或oc restart
。如何强制刷新pod中的文件?
我在想它可能是Ruby的东西(比如PHP中的opcache)。但想到重新启动pod会处理它。只是无法弄清楚如何重新启动一个吊舱。
答案 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)
按照以下步骤
答案 3 :(得分:1)
如果你想使用 GUI 来做:
如果你删除你的 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