• CoreOS 手动升级篇


    说到升级...通常肯定会以下2个步骤:

    1. 检查是否有新版本.
    2. 下载和安装新版本.

    在 CoreOS 中也一样,我们先来看下在 CoreOS 中对应的命令:

    # 检查是否有新版本
    update_engine_client -check_for_update
    # 下载和安装新版本
    update_engine_client -update
    

    CoreOS 升级中最主要的命令就是上面这2个了,用脑子记好了.

    看到这里,肯定有不少小伙伴已经迫不及待的去手搓命令去执行升级了, 然而,你可能会遇见这样的情况:

    # 检查是否有新版本
    update_engine_client -check_for_update
    # 一般会输出下面这么一句,然后啥反应也没了...
    I0529 06:41:05.984814   816 update_engine_client.cc:247] Initiating update check and install.
    
    # 下载和安装新版本
    update_engine_client -update
    # 一般会输出下面这段
    I0529 06:42:48.364600   817 update_engine_client.cc:247] Initiating update check and install.
    I0529 06:42:48.372054   817 update_engine_client.cc:252] Waiting for update to complete.
    LAST_CHECKED_TIME=1496040169
    PROGRESS=0.000000
    CURRENT_OP=UPDATE_STATUS_IDLE
    NEW_VERSION=0.0.0
    NEW_SIZE=0
    E0529 06:42:53.524657   817 update_engine_client.cc:190] Update failed.
    # 咋一看`NEW_VERSION=0.0.0`是没检测到新版本,
    # 再咋一看`Update failed`,咦...都没有新版本,为什么更新失败呢?
    

    Tips: 需要注意的是,不管是网络问题导致的找不到更新,还是已经更新到最新版本了,执行update_engine_client -update都会出现NEW_VERSION=0.0.0Update failed的情况,这明显是**!human**的设计啊...

    这里会有这么几种情况:

    • CoreOS 的更新需要连接远程服务器,那么会涉及到对外(墙外...你懂得)的网络连接问题,这个问题会比较普遍,一般是通过设置代理来解决.
    • 其次是 CoreOS 升级所要涉及到的 CoreOS 版本问题.

    CoreOS 版本

    大多数的软件通常都有什么内测版、公测版什么的. 而在 CoreOS 中, 有以下3个版本:

    • alpha - α版,音译:阿尔法,俗称尝鲜版,是最新的版本,但是容易出现bug,最不稳定.
    • beta - β版,音译:贝塔版,俗称内测版,修复了一些alpha版中的bug,相对稳定.
    • stable - 俗称稳定版,修复了beta版中的所有已知bug,最稳定,更适用于生产环境.

    可以明显看出:
    3个版本的出世时间: alpha > beta > stable.
    对应的3个版本的版本号也是:alpha > beta > stable.
    具体的版本号我们可以查看 CoreOS 官网 提供的发行日志: CoreOS Release

    这里就引出一个实质性的问题:"我TM更新的到底是哪个版本?"
    不要急,我们来慢慢看:

    # 可以通过查看/etc/coreos/update.conf文件中的GROUP属性的值来得到.
    cat /etc/coreos/update.conf
    # 输出
    GROUP=alpha
    

    可以看到,我的更新的是针对alpha版本的. 当然,如果你想要更换成别的版本,可以修改GROUP的值,然后执行命令systemctl daemon-reload重新加载下即可生效.

    CoreOS 更新策略

    待补充...

  • 相关阅读:
    拼接数组的几种方法
    小议GetHashCode()方法
    如何在窗体间传递数据!
    设置TextBox控件的滚动条位置
    关于Console.Read()方法的一些误解!
    从内存布局角度谈谈值类型和引用类型!
    在Windows线程中模拟其他用户上下文!
    将文本插入TextBox控件的光标位置!
    用C#实现屏幕键盘!
    CLR的程序集定位算法
  • 原文地址:https://www.cnblogs.com/taadis/p/12126156.html
Copyright © 2020-2023  润新知