LoginSignup
0
0

古いkopsクラスタがEC2再生成後に起動しなくなったとき

Last updated at Posted at 2024-04-24

概要

kopsを使って構築したKubernetesクラスタにて、クラスタノードのEC2が再作成されたときはcloud-initを利用して自動的にKubernetesクラスタノードになる構築プロセスが実行されます。
このプロセスの中でapt-get updateを実行しますが、古いkopsを使い続けているとOS (Ubuntu) のバージョンも古くなり、やがてaptリポジトリがEOLして自動構成が完了しなくなります。
このようなときは、リポジトリのEOL警告を無視して強制的にapt-get updateするコマンドを手動で実行することで、構築プロセスを続行させることが可能です。
運用回避ではありますが、バージョンアップまでの繋としてご活用ください。

手順

  1. ELBのインスタンスステータスを確認する
    • 本症状であればOutOfServiceになっています
    • InServiceにも関わらず障害状況であれば、本手順の適用外です
  2. クラスタのEC2にsshする鍵を取得する
    $ aws s3 cp s3://hoge.domain.k8s.local/keyfile .
      # 構築時に鍵やステートを保管するS3バケットを指定したはずなので探してください
    $ chmod 400 keyfile
    
  3. クラスタのEC2にsshログインする
    $ ssh -i keyfile admin@<EC2のIP>
      # EC2のIPはAWSコンソールで確認して下さい
    
  4. 本手順が適用可能な症状であるかログを確認する
    • 下記のようなパッケージインストールに失敗したメッセージ (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..
      
  5. リポジトリの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
    
  6. クラスタの全EC2で同様の操作を繰り返す
  7. 自動的に構成プロセスが再実行されるので5~10分程待つ
    • ELBのインスタンスのステータスがInServiceに変われば復旧完了です
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0