我是Kubernete的新手,对apply
和rollout
命令有点困惑。如果我更新Kubernete配置文件,我应该使用kubectl apply -f
还是kubectl rollout
?
如果我更新kubernete配置并运行kubectl apply -f
,它将终止正在运行的pod并创建一个新的pod。
但是rollout
也有restart
命令,用于重新启动pod。那么我应该什么时候使用rollout restart
?
我是Kubernete的新手,对apply
和rollout
命令有点困惑。如果我更新Kubernete配置文件,我应该使用kubectl apply -f
还是kubectl rollout
?
如果我更新kubernete配置并运行kubectl apply -f
,它将终止正在运行的pod并创建一个新的pod。
但是rollout
也有restart
命令,用于重新启动pod。那么我应该什么时候使用rollout restart
?
3条答案
按热度按时间sd2nnvve1#
我能想到的一个主要区别是
kubectl apply
可以用于所有Kubernetes对象(Pod
,Deployment
,ConfigMaps
,Secrets
等),而kubectl rollout
专门适用于处理一些计算的对象,如Deployments
,Statefulsets
等。此外,
kubectl rollout restart
对于重新启动pod很有用,而不需要在spec
字段中进行任何更改,这在kubectl apply
中是不可能的。如果我们在spec
字段中没有更改的情况下运行kubectl apply
,则pod将不会更新,因为没有需要更新的更改。考虑这样一种场景:某些配置(比如外部证书)作为
ConfigMap
挂载到pod,而ConfigMap
中的任何更改都不会导致pod自动更新。在这种场景中,kubectl rollout restart
可以用于创建新的pod,然后可以从ConfigMap
读取更新的配置。另外,文档中有一个重要的说明:
注意事项:当且仅当Deployment的Pod模板(即.spec.template)发生更改时,才会触发Deployment的rollout。例如,如果模板的标签或容器映像发生更新。其他更新(如缩放Deployment)不会触发rollout。
6rvt4ljy2#
kubectl apply -f
用于应用配置文件kubernetes(在其中部署所需的应用程序)。kubectl rollout
用于检查上述部署的应用程序例如
假设你的部署配置文件看起来像这样,你保存在nginx.yaml文件中。现在你想从下面的yaml文件部署nginx应用程序。所以你应该使用
kubectl apply -f nginx.yaml
,现在你想检查你的应用程序是否使用kubectl rollout status nginx
成功部署。字符串
如果你在本地更新了yaml,并且你想用现有的替换它,那么使用
kubectl replace -f nginx.yaml
jk9hmnmh3#
扩展Krishna的答案。
以部署为例。
如果您是第一次创建pod,添加新pod,更改配置(如副本),或者如果您在pod中有版本化的映像,并且您正在提升或降低版本,则使用
apply -f <filename>
。在最后一点上,你正在提高或降低镜像的版本(由pod使用),如果你使用最新的版本,并且你运行
apply -f <filename>
kubernetes,那么文件中不会有任何变化。但是如果你确实更新了pod的镜像,并且你想rollout
新的变化,那么你必须使用rollout
。此外,使用
rollout
,您可以使用部署的revisions
(history
)返回(undo
)、pause
部署和resume
暂停部署。有关卷展栏的详细信息,请参阅Deployments