• Kubernetes中如何让Deployment更新镜像


    问题描述

    我的deployment有单个pod,我的自定义docker镜像如下:

    1
    2
    3
    containers:
    - name: mycontainer
    image: myimage:latest

    在开发过程中,我想推送新的最新版本并更新Deployment。无法明确定义tag/version并为每个构建增加它,并且无法找到如何做到这一点:

    1
    kubectl set image deployment/my-deployment mycontainer=myimage:1.9.1

    高票回答

    您可以使用grace period(例如30秒或更长时间,根据容器启动时间和镜像大小)配置您的pod,并设置“imagePullPolicy:”Always“。并使用kubectl delete pod pod_name。将创建一个新容器并且最新镜像自动下载,然后旧容器终止。

    例子:

    1
    2
    3
    4
    5
    6
    spec:
    terminationGracePeriodSeconds: 30
    containers:
    - name: my_container
    image: my_image:latest
    imagePullPolicy: "Always"

    我目前正在使用Jenkins进行自动构建和打镜像标签,它看起来像这样:

    1
    kubectl --user="kube-user" --server="https://kubemaster.example.com"  --token=$ACCESS_TOKEN set image deployment/my-deployment mycontainer=myimage:"$BUILD_NUMBER-$SHORT_GIT_COMMIT"

    另一个技巧是最初运行:

    1
    kubectl set image deployment/my-deployment mycontainer=myimage:latest

    然后:

    1
    kubectl set image deployment/my-deployment mycontainer=myimage

    它实际上会触发滚动更新,但请确保您还有imagePullPolicy:“Always”设置。

    我发现的另一个技巧是,您不必更改镜像名称,更改将触发滚动更新的字段的值,例如terminationGracePeriodSeconds。您可以使用kubectl编辑部署your_deployment或kubectl apply -f your_deployment.yaml或使用如下补丁:

    1
    2
    kubectl patch deployment your_deployment -p 
    '{"spec":{"template":{"spec":{"terminationGracePeriodSeconds":31}}}}'

    只需确保始终更改数值。

    原文链接

    Kubernetes how to make Deployment to update image

  • 相关阅读:
    Kafka 设计思路
    DBeaver——超好用可视化数据库!(墙裂推荐(づ ̄3 ̄)づ╭❤~)
    蓝图BluePrint——基于Flask框架
    SkyWalking全链路监控java项目
    win10创建ssh公钥
    mysql通过列名搜索出表名
    使用nodejs判断前端性能
    golang 栈、堆分配分析及CPU、内存性能情况
    UML图-(用例图、类图、状态图、活动图、时序图)
    linux参数调优
  • 原文地址:https://www.cnblogs.com/cangqinglang/p/11959300.html
Copyright © 2020-2023  润新知