Rancher 1.x系でKubernetesを検証していると、クラスタ自体を作り直すことも多々あるかと思います。そんんなとき、ホストを再利用する場合に「ダッシュボードが表示されなくて困った」という現象に遭遇する人が少なくありません。

正確にはダッシュボードのページ自体はリクエストで返ってきているのですが、白紙のページになってしまっています。この現象に陥る場合「 Deleting Kubernetes 」を実施していない可能性が高いです。Rancherのホストを掃除するときに、コンテナだけ一掃( docker rm )して綺麗にした気になってしまいますが、ボリュームの情報は残ってます。なので綺麗な状態から作り直しているつもりが、実は既存のボリュームをマウントしているがために中途半端にデータを引き継いでしまう状況が生まれてしまいます。
今回の場合は etcd のボリュームが問題を引き起こします。公式ドキュメントにも記載されていますが、Kubernetesを削除するには

  • Podの掃除
  • ホストに残っている永続データを削除する

という手順が必要になります。

Podの掃除

これは単純です。

kubectl delete node --all

上記コマンドを実行してkubernetesにノードを削除してもらいましょう。

ホストに残っている永続データを削除する

すべてのホストで

  • docker volume を削除
  • etcd のバックアップを削除

する必要があります。

docker volume を削除

以下のコマンドをすべてのホストで実行することですべての etcd volume を削除できます。

docker volume rm etcd

etcd のバックアップを削除

デフォルトで /var/etcd/backupsetcd のバックアップが保存されているので、これらを削除します。

rm -r /var/etcd/backups

掃除しなかった場合に何が起きるか

CONSEQUENCES OF NOT CLEANING UP に記載されているように、掃除を忘れた場合はいろいろと問題が発生します。

  • 前回使っていたkubernetesのアプリが、新しいクラスタで意図せず起動してしまう( etcd に保持してあるから)
  • kubernetes APIサービスは新しく立ち上がった際にRancherから新たに証明書を取得するため、もともと etcd に保存されていたシークレットが無効になってしまう。なのでkubernetes APIサービスとやり取りするサービスは正常に動作しなくなる。これには dashboard, helm, heapster などが含まれる。

今回ダッシュボードが表示されない問題については後者の問題に引っかかっています。なので同じホストでクラスタを再作成する人は注意が必要です。ちなみに こちらのIssue でもメンションされている問題です。

----------2017-11-23-23.59.57

ダッシュボードが表示されると安心しますよね!

© 2018. SuperSoftware Co., Ltd. All Rights Reserved.