概要
CoreOS を自動アップデートを使わずに手動でアップデートする話。
CoreOS のアップデートの仕組み及び自動アップデートについては CoreOS の自動アップデートを理解する を参照
手動でアップデートする理由
2014/12/18 現在 CoreOS の自動アップデートはまだ不安定という印象なため。海外のサービスで CoreOS を導入しているところでも、自分の環境でも自動アップデート後に etcd のクラスタリング(fleet もダイレクトに影響を受ける)に問題が生じるケースが発生しておりアップデート戦略は off
にしておくのが無難な気がしている。
ただ、「CoreOS の自動アップデートを理解する」の「背景」 にも書いた通り、継続的にアップデートしていくうえで自動アップデートは理想的なので引き続き自動アップデートの導入を試みていきたい。
手動でアップデートする
コンテキストとしては
- 現在のバージョンは stable channel の最新の 494.5.0
- 522.2.0 を使いたい
- 522.2.0 は alpha channel の最新バージョン
- アップデート戦略は
off
(=手動アップデート)
# 現在のバージョンを確認
core@core-01 ~ $ cat /etc/os-release
NAME=CoreOS
ID=coreos
VERSION=494.5.0
VERSION_ID=494.5.0
BUILD_ID=
PRETTY_NAME="CoreOS 494.5.0"
ANSI_COLOR="1;32"
HOME_URL="https://coreos.com/"
# アップデート戦略の設定
core@core-01 ~ $ cat /etc/coreos/update.conf
GROUP=alpha
REBOOT_STRATEGY=off
# 手動でアップデート
core@core-01 ~ $ sudo update_engine_client -update
[1218/111512:INFO:update_engine_client.cc(245)] Initiating update check and install.
[1218/111512:INFO:update_engine_client.cc(250)] Waiting for update to complete.
LAST_CHECKED_TIME=1418868913
PROGRESS=0.000000
CURRENT_OP=UPDATE_STATUS_UPDATE_AVAILABLE
NEW_VERSION=0.0.0.0
NEW_SIZE=106685362
LAST_CHECKED_TIME=1418868913
PROGRESS=0.000000
CURRENT_OP=UPDATE_STATUS_UPDATE_AVAILABLE
NEW_VERSION=0.0.0.0
NEW_SIZE=106685362
LAST_CHECKED_TIME=1418868913
PROGRESS=0.000000
CURRENT_OP=UPDATE_STATUS_UPDATE_AVAILABLE
NEW_VERSION=0.0.0.0
NEW_SIZE=106685362
LAST_CHECKED_TIME=1418868913
PROGRESS=0.000000
CURRENT_OP=UPDATE_STATUS_UPDATE_AVAILABLE
NEW_VERSION=0.0.0.0
NEW_SIZE=106685362
LAST_CHECKED_TIME=1418868913
PROGRESS=0.141913
CURRENT_OP=UPDATE_STATUS_DOWNLOADING
NEW_VERSION=0.0.0.0
NEW_SIZE=106685362
LAST_CHECKED_TIME=1418868913
PROGRESS=0.456123
CURRENT_OP=UPDATE_STATUS_DOWNLOADING
NEW_VERSION=0.0.0.0
NEW_SIZE=106685362
LAST_CHECKED_TIME=1418868913
PROGRESS=0.668975
CURRENT_OP=UPDATE_STATUS_DOWNLOADING
NEW_VERSION=0.0.0.0
NEW_SIZE=106685362
LAST_CHECKED_TIME=1418868913
PROGRESS=0.891964
CURRENT_OP=UPDATE_STATUS_DOWNLOADING
NEW_VERSION=0.0.0.0
NEW_SIZE=106685362
LAST_CHECKED_TIME=1418868913
PROGRESS=0.000000
CURRENT_OP=UPDATE_STATUS_FINALIZING
NEW_VERSION=0.0.0.0
NEW_SIZE=106685362
LAST_CHECKED_TIME=1418868913
PROGRESS=0.000000
CURRENT_OP=UPDATE_STATUS_FINALIZING
NEW_VERSION=0.0.0.0
NEW_SIZE=106685362
LAST_CHECKED_TIME=1418868913
PROGRESS=0.000000
CURRENT_OP=UPDATE_STATUS_FINALIZING
NEW_VERSION=0.0.0.0
NEW_SIZE=106685362
LAST_CHECKED_TIME=1418868913
PROGRESS=0.000000
CURRENT_OP=UPDATE_STATUS_FINALIZING
NEW_VERSION=0.0.0.0
NEW_SIZE=106685362
LAST_CHECKED_TIME=1418868913
PROGRESS=0.000000
CURRENT_OP=UPDATE_STATUS_UPDATED_NEED_REBOOT
NEW_VERSION=0.0.0.0
NEW_SIZE=106685362
[1218/111617:INFO:update_engine_client.cc(193)] Update succeeded -- reboot needed.
# リブート
core@core-01 ~ $ sudo reboot
# アップデート後のバージョンを確認
core@ip-10-0-0-26 ~ $ cat /etc/os-release
NAME=CoreOS
ID=coreos
VERSION=522.2.0
VERSION_ID=522.2.0
BUILD_ID=
PRETTY_NAME="CoreOS 522.2.0"
ANSI_COLOR="1;32"
HOME_URL="https://coreos.com/"
BUG_REPORT_URL="https://github.com/coreos/bugs/issues"
- systemd を使って docker コンテナを立ち上げていれば リブート後もコンテナは立ち上がり直す。
- 作業にかかる時間も 5 分もかからないくらい
メモと感想
特定のバージョンにしたい場合はどうすればいいんだろう?
TODO