タイトルが長いですが、CoreOSでRancherを動かし、CoreOSベースでRancher Kubernetesクラスターをつくってみました。 今回の構成は次のとおりです。
詳細は述べられないのですが、OpenStackベースでKubernetesを動かす必要があって、その予行演習を兼ねています。クラスターを作るだけであればもう少し低スペックなフレーバーを定義しても動くわけですが、アプリケーションをいくつか動かそうとするとそれ相応のフレーバーを定義しないと駄目なことがなんとなくわかったので収穫でした。
せっかく色々動かしたので、情報として共有したいと思います。
Rancher
同じネットワークにアクセスできるKVM VMで動かします。 CoreOS Stableをインストールして、Dockerサービスを使えるようにしておきます。
Dockerの事前準備が終わったら、次を実行するだけです。簡単ですね。
# docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:stable
Node
同じネットワークにアクセスできるOpenStackのインスタンスで動かします。 CoreOS Stableのイメージを使ってインスタンスを起動して、Dockerサービスを使えるようにしておきます。
Flating IPアドレスを割り当てておきます。
ちなみにOpenStackはCanonicalのJujuとMAASを使って構築したものを使っています。各インスタンスにはCephのStorageを /dev/sda
に提供しています。
Nodeのセキュリティグループ
OpenStackにはdefaultというセキュリティグループがデフォルトで存在しますが、最終的にRancherでアプリケーションを実行するときに使うポートもいくつか開けないといけないので「Service」というセキュリティグループを作りました。インスタンスは「default」と「Service」のセキュリティグループを使って作成することにします。
ポートは以下を設定しました。
- 6443(TCP)
- 80(TCP)
- 443(TCP)
- 30000 - 32767(ノードポート用。TCP/UDP)
CoreOSのイメージ
昨日Fedora CoreOSについて書いたので、本当はFedora CoreOSでやりたかったのですが、現状OpenStackで上手く動かすことができなかったためにCoreOS Container Linuxを使いました。イメージはドキュメントにあるような感じでStableの最新イメージをダウンロードして、OpenStack Glanceに登録しました。ちなみにインスタンス起動時はIgnition Configなどは使わず、デフォルト設定のままインスタンスを起動しています。
セットアップ
あとの流れは以前の記事と同様です。今回はRancher 2.3.3をデプロイしました。Rancher 2にOpenStackインスタンスノードを登録して、etcdとコントロールプレーン、Workerを画面に表示されているdocker run
コマンドをパブリックアドレスとプライベートアドレスを指定して、それぞれにデプロイします。
クラスターを登録できたら、あとはRancher 2でアプリをバンバン動かすだけです。
ちなみにCLIもインストールしておくと非常に便利です。Rancher2の右下のあたりから、対応するOSのRancher CLIをダウンロードできます。