zoukankan      html  css  js  c++  java
  • kubectl 更新容器镜像

    kubectl set image 命令

          我一般是在CICD里更新容器镜像地址,没有原始的也不需要原始的yml文件,kubectl set image 显的油漆方便。

    kubectl set image deployment/nginx busybox=busybox:3.2 nginx=nginx:1.19.1

    kubectl scale 命令

    kubectl scale --replicas=3 deployment/nginx

    kubectl rollout restart 命令

    此命令可以让容器重新部署。
    示例
    将名为nginx的deployment重新部署.

    kubectl rollout restart deployment/nginx

    有了以上3个命令的基础,做个假设。
    1、假设每次镜像版本号都会发生变更,那么使用 kubectl set image 就可以达到更新镜像并重新部署的效果;
    2、假设每次镜像版本号都 不 会发生变更,那么可以有两种方式
    1)先 kubectl set image 更新镜像,再 kubectl scale --replicas=0,然后 kubectl scale --replicas=1,我曾经与saas厂商对接(私有化部署)时遇到过,当时没有太多思考,现在想来,这样处理会导致服务不可用性增加(因为有个0->1的过程么,期间服务会不可用)。
    2)先 kubectl set image 更新镜像,然后使用 kubectl rollout 重新部署。

    综上,2的1)并不可取。
    写个脚本吧。

    # 先更新镜像
    result=`kubectl set image deployment nginx *=nginx:alpine -n default`
    
    # 检测镜像是否更新成功
    if [[ "$(echo $result | grep updated)" != ""  ]]; then
        # 镜像地址更新了,会自动重新部署
        echo 'UPDATED'
    else
        # 镜像地址与之前相同,需要触发重新部署
        echo 'NOT UPDATE'
        kubectl rollout restart deployment nginx -n default
    fi

    参考文档:https://blog.csdn.net/woshiduxingjun/article/details/118677276

  • 相关阅读:
    微信小程序实战,与后台交互
    微信小程序开发笔记
    微信小程序 之页面跳转
    小程序(四):模板
    (1)Appium基础操作API
    ADB命令
    移动端测试知识概览
    计算机网络常见面试题
    pip命令
    随笔-记录一些简单内容
  • 原文地址:https://www.cnblogs.com/yinliang/p/15673397.html
Copyright © 2011-2022 走看看