s5s*_*s5s 69 kubernetes kubectl
我有一个test-1495806908-xn5jn带2个容器的吊舱.我想重新启动其中一个叫container-test.是否可以重新启动pod中的单个容器以及如何?如果没有,我该如何重启pod?
pod是使用deployment.yaml创建的:
kubectl create -f deployment.yaml
Run Code Online (Sandbox Code Playgroud)
mda*_*iel 95
是否可以重新启动单个容器
不通过kubectl,虽然取决于您的群集的设置,您可以"作弊" docker kill the-sha-goes-here,这将导致kubelet重新启动"失败"的容器(当然,假设Pod的重启策略说它应该做什么)
如何重新启动pod
这取决于Pod的创建方式,但根据您提供的Pod名称,它似乎受ReplicaSet的监督,因此您可以kubectl delete pod test-1495806908-xn5jn和kubernetes在其位置创建一个新的(新的Pod将有一个不同的名字,所以不要指望再次kubectl get pods回归test-1495806908-xn5jn)
Zso*_*ona 36
在某些情况下,您需要重新启动特定容器而不是删除容器并让Kubernetes重新创建它.
做一个kubectl exec POD_NAME -c CONTAINER_NAME /sbin/killall5为我工作.
ROY*_*ROY 20
pod和container都是短暂的,请尝试使用以下命令停止特定的容器,并且k8s集群将重新启动新的容器。
kubectl exec -it [POD_NAME] -c [CONTAINER_NAME] -- /bin/sh -c "kill 1"
Run Code Online (Sandbox Code Playgroud)
这将向SIGTERM进程1 发送信号,该进程1是容器中运行的主要进程。所有其他进程将是进程1的子进程,并且将在进程1退出后终止。有关可发送的其他信号,请参见kill联机帮助页。
Aja*_*ddy 15
以上所有答案都提到了删除 pod...但是如果您有许多相同服务的 pod,那么删除每个 pod 会很乏味...
因此,我提出以下解决方案,重新启动:
1)将比例设置为零:
kubectl scale deployment <<name>> --replicas=0 -n service
Run Code Online (Sandbox Code Playgroud)
上面的命令将终止所有具有名称的 pod <<name>>
2)要再次启动pod,将replicas设置为大于0
kubectl scale deployment <<name>> --replicas=2 -n service
Run Code Online (Sandbox Code Playgroud)
上面的命令将使用 2 个副本再次启动您的 pod。
Inn*_*gbo 12
拥有kubernetes的全部原因在于它为您管理容器,因此您不必太在意容器中容器的生命周期.
由于您有一个deployment使用的设置replica set.您可以删除pod kubectl delete pod test-1495806908-xn5jn,kubernetes将使用2个容器管理新pod的创建,而不会出现任何停机.尝试手动重启pod中的单个容器会抵消kubernetes的全部好处.
小智 11
kubectl rollout restart deployment [deployment_name]
Run Code Online (Sandbox Code Playgroud)
或者
kubectl delete pod [pod_name]
Run Code Online (Sandbox Code Playgroud)
我们使用非常方便的命令行来强制在集成 Pod 上重新部署新映像。
我们注意到我们的 alpine 容器都在 PID 5 上运行“维持”命令。因此,向其发送信号SIGTERM会导致容器关闭。imagePullPolicy设置为Always让 kubelet 在带回容器时重新拉取最新镜像。
kubectl exec -i [pod name] -c [container-name] -- kill -15 5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
144983 次 |
| 最近记录: |