首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么时候使用`apply`,什么时候使用`rollout`?

什么时候使用`apply`,什么时候使用`rollout`?
EN

Stack Overflow用户
提问于 2021-03-01 18:32:03
回答 2查看 248关注 0票数 2

我是kubernete的新手,对applyrollout命令有一点困惑。如果我更新kubernete配置文件,我应该使用kubectl apply -f还是kubectl rollout

如果我更新kubernete配置并运行kubectl apply -f,它将终止正在运行的pod并创建一个新的pod。

但是rollout也有用于重启pod的restart命令。那么我什么时候应该使用rollout restart呢?

EN

回答 2

Stack Overflow用户

发布于 2021-03-01 18:42:14

我能想到的一个主要区别是kubectl apply可以用于所有Kubernetes对象(PodDeploymentConfigMapsSecrets等)。其中,as kubectl rollout特别适用于处理某些计算的对象,如DeploymentsStatefulsets等。

此外,在不需要对spec字段进行任何更改的情况下,kubectl rollout restart对于重新启动pods非常有用,而这在kubectl apply中是不可能的。如果我们在spec字段没有更改的情况下运行kubectl apply,那么pods将不会更新,因为没有要更新的更改。

考虑这样一种场景,其中某些配置(例如,外部证书)作为ConfigMap挂载到pods,并且ConfigMap中的任何更改都不会导致pods自动更新。在这样的场景中,kubectl rollout restart可以用于创建新的pods,然后这些pods可以从ConfigMap读取更新的配置。

另外,来自docs的一个重要注意事项

注意:如果且仅当更改部署的Pod模板(即.spec.template)时,才会触发部署的卷展栏,例如更新模板的标签或容器镜像。其他更新,例如扩展部署,不会触发部署。

票数 4
EN

Stack Overflow用户

发布于 2021-03-01 18:36:38

用于应用配置文件kubernetes的kubectl apply -f (部署所需应用程序的位置)。

并使用kubectl rollout检查上述部署的应用程序

示例

假设您的部署配置文件如下所示,并将其保存在nginx.yaml文件中。现在,您希望从下面的yaml文件部署nginx应用程序。因此,您应该使用kubectl apply -f nginx.yaml,现在您需要检查是否使用kubectl rollout status nginx成功部署了应用程序

代码语言:javascript
运行
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

如果您在本地更新了yaml,并希望将其替换为现有的,则使用kubectl replace -f nginx.yaml

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66420443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档