概要
kopsを使って構築したKubernetesクラスタにて、クラスタノードのEC2が再作成されたときはcloud-initを利用して自動的にKubernetesクラスタノードになる構築プロセスが実行されます。
このプロセスの中でapt-get update
を実行しますが、古いkopsを使い続けているとOS (Ubuntu) のバージョンも古くなり、やがてaptリポジトリがEOLして自動構成が完了しなくなります。
このようなときは、リポジトリのEOL警告を無視して強制的にapt-get update
するコマンドを手動で実行することで、構築プロセスを続行させることが可能です。
運用回避ではありますが、バージョンアップまでの繋としてご活用ください。
手順
- ELBのインスタンスステータスを確認する
- 本症状であればOutOfServiceになっています
- InServiceにも関わらず障害状況であれば、本手順の適用外です
- クラスタのEC2にsshする鍵を取得する
$ aws s3 cp s3://hoge.domain.k8s.local/keyfile . # 構築時に鍵やステートを保管するS3バケットを指定したはずなので探してください $ chmod 400 keyfile
- クラスタのEC2にsshログインする
$ ssh -i keyfile admin@<EC2のIP> # EC2のIPはAWSコンソールで確認して下さい
- 本手順が適用可能な症状であるかログを確認する
- 下記のようなパッケージインストールに失敗したメッセージ (error installing package) があれば本手順の適用対象です
$ sudo tail -f /var/log/daemon.log Jan 21 05:51:18 ip-172-20-50-32 nodeup[718]: W0121 05:51:18.977780 718 executor.go:130] error running task "Package/ebtables" (9m59s remaining to succeed): error installing package "ebtables": exit status 100: Reading package lists..
- 下記のようなパッケージインストールに失敗したメッセージ (error installing package) があれば本手順の適用対象です
- リポジトリのEOL警告を無視して、手動でapt-get updateを実行する
$ sudo apt-get -o Acquire::Check-Valid-Until=false update Hit http://security.debian.org jessie/updates InRelease (中略) Fetched 13.8 MB in 2s (5,174 kB/s) Reading package lists... Done
- クラスタの全EC2で同様の操作を繰り返す
- 自動的に構成プロセスが再実行されるので5~10分程待つ
- ELBのインスタンスのステータスがInServiceに変われば復旧完了です