【问题标题】:How does Google Container Optimized OS handle a scheduled shutdown?Google Container Optimized OS 如何处理计划关闭?
【发布时间】:2020-07-18 00:10:47
【问题描述】:

我在 Google Cloud 上使用 Container Optimized OS,发现“自动更新”功能没有 apply the updates until the system is restarted,并且不提供任何在应用更新后安排重新启动的功能。

我正在编写一个简单的启动脚本,用于在需要重新启动时安排关机,本质上是:

#!/usr/bin/env sh

update_engine_client --block_until_reboot_is_needed
shutdown -r 02:00

我的问题是:如何确定是否已安排关机?到目前为止,我已经尝试了三种在此操作系统中不起作用的方法:

  1. $ ps -ef | grep shutdown - 没有关机进程
  2. $ systemctl status systemd-shutdownd.service - Unit systemd-shutdownd.service could not be found.
  3. cat /run/systemd/shutdown/scheduled - 找不到文件

有关此操作系统及其所基于的文档很少。什么决定了如何安排关机,以及 COS 如何处理它?

【问题讨论】:

    标签: google-container-os google-container-optimized-os


    【解决方案1】:

    关于您的问题:我如何确定是否已安排关机?

    默认情况下没有配置关闭任务,您必须配置它(每天,每周,每月等),更简单的方法是使用“crond”(OS Linux 任务调度程序)请关注@987654321 @知道如何在 cron 中配置作业(COS 通常使用 Ubuntu 操作系统)。

    根据此 GCP guide:“Container-Optimized OS 实例配置为在后台自动下载每周更新;只需重新启动即可使用最新更新。”

    因此,我建议您在非生产高峰日(周六或周日)每周配置一次 cron 作业。

    如果您还有其他问题,请告诉我。

    【讨论】:

    • 在我之前处理这个操作系统时,我了解到没有可用的系统 crond。我有一个用于我的 cron 任务的容器,但我不想仅仅为了重新启动主机而运行一个容器——这太过分了,而且存在安全风险。我对安排关机的不同方式更感兴趣:我现在知道并在我的 Q 和 A 中提到了 3 种 - 阻塞任务 (ps)、systemd 和 busctl。
    • 你说得对,但是 crond 不包含在 COS 镜像中;您可以使用“Cloud Scheduler”和“Cloud Functions”来安排实例的关闭和启动。如果您更愿意使用 Cloud scheduler,我发现了另一个 stackoverflow 问题,其中解释了如何执行此操作,请参考此 [链接] (stackoverflow.com/questions/58830867/…) 这是另一个 [指南] (medium.com/google-cloud/…),您可能会发现它很有用。
    【解决方案2】:

    在 Container-Optimized OS 中,following command will display pending shutdown information in epoch time

    $ busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown

    我很好奇为什么 Google 选择使用 busctl 而不是 systemd - 我不熟悉 busctl 并且不得不阅读它以了解该命令的作用 - busctl man page

    例子:

    $ sudo shutdown -r 02:00
    Shutdown scheduled for Fri 2020-07-17 02:00:00 UTC, use 'shutdown -c' to cancel.
    $ busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown
    (st) "reboot" 1594951200000000
    $ sudo shutdown -c
    busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown
    (st) "" 0
    

    【讨论】:

      猜你喜欢
      • 2018-06-20
      • 2018-08-06
      • 2021-03-27
      • 1970-01-01
      • 2020-12-14
      • 2023-02-08
      • 1970-01-01
      • 2016-08-23
      • 1970-01-01
      相关资源
      最近更新 更多