ujunのブログ

RancherのNode DriverでHetzner CloudにKubernetesクラスタを作る

手軽/安価にKubernetesクラスタを作るときに自分がやっていること。 Rancherから格安VPSであるHetzner Cloudに瞬時にクラスタを構築する。

Hetzner Cloud

Hetzner Cloudとは、Hetzner社が提供するVPSサービス(https://www.hetzner.com/cloud)で、価格が鬼のように安いです。

(2020/11現在)

cpu(core) memory(GB) 価格(€/month)
2 4 5.68
4 8 14.38
4 16 18.44

といった具合。ただし、DCは、ヘルシンキニュルンベルクファルケンシュタインリージョンに限られるようです。 日本からSSH越しの作業をしていると、コマンド1つ1つの結果が返るまでにかなり待たされるなという感じ。 ニュルンベルクのマイスタージンガーと聞いてブギーポップを連想するお年頃なので、自分はニュルンベルクを利用することが多いです。

Rancherクラスタ

Rancherクラスタは構築済みであるとします。これはHetznerでもなんでもいいと思いますが、自分は検証用途では基本的にHetzner Cloudを使うので、Hetzner Cloudで用意。 念のため以下にRancherをシングルノードで起動するコマンドを記載(Let's Encryptで生成したサーバー証明書を使うようオプションで指定している)。

docker run -d --privileged --restart=unless-stopped -p 80:80 -p 443:443 -v /path/to/cert.pem:/etc/rancher/ssl/cert.pem -v /path/to/key.pem:/etc/rancher/ssl/key.pem rancher/rancher:latest --no-cacert

Node Driverを追加

ここらから本題。Rancherには、新規Kubernetesクラスタをプロビジョニングするとき、Infrastructure Providerという機能を利用できる。つまり、DigitalOcean、LinodeAmazon EC2といった既存サービスを指定して、インスタンスの作成からそこにKubernetesコンポーネントを導入するところまで一気に実行する仕組みがあります。デフォルトではこれらに加えて、vSphereなどのNode DriverがActivateされていますが、Hetzner Cloudはそもそもないので、自前で導入/Activateする必要があります。

Rancher Docs: Node Drivers

しかしNode Driverの追加はポチポチでできます(以下を参考に)。

jmrobles.medium.com

  1. Rancherのグローバルメニューから、 Tools -> Drivers
  2. Node Drivers -> Add Node Driver を選択
  3. フォームに以下を入力
  4. Create をクリック

Node Templateを追加

さて、Node Driverが追加されたので、あとはこれを使ってNode Templateを作成するだけです。Node Templateは、Kubernetesをプロビジョニングする際に参照される諸情報。例えば、インスタンスのサイズとか、OSイメージとか、リージョンをテンプレートとして登録できるます。

Rancher Docs: Managing Node Templates

登録したHetzner Cloud Node Driverを使ってNode Templateを登録します。

  1. ユーザーアバターから Node Template を選択する(なぜかNode Templateはユーザー設定で管理されるらしい)
  2. Add Template を選択
  3. すると、以下のように Hetzner がリストの中に表示されている。TokenにHetzner側から発行したAPI Tokenを入れ、Configure Server をクリック
    f:id:ujun:20201122174422p:plain
    hetzner01
  4. 最低限以下を入力しておけばOKでしょう
    • Region
    • Image
    • Size
    • Name
  5. Create をクリック

Kubernetesクラスタをプロビジョニング

マスターノードとワーカーノード1台ずつのクラスタを構築。

  1. グローバルメニューから Clusters -> Add Cluster をクリック
  2. Create a new Kubernetes cluster の Infrastructure Providerを選択する部分で、Hetznerを選択
  3. Formに従って、 Node Template でさきほどのテンプレートのNameを選択する
  4. 以下のようにコンポーネントをチェックするとマスターノードとワーカーノードが1つずつとなる
    f:id:ujun:20201122215923p:plain
    hetzner02

これで待っていれば、クラスタが出来上がり。

クラスタの編集からポチポチとノード数を増やすだけで自動的にHetzner Cloudにインスタンスが生成され、スケールできるようになりました。 なんらかのモニタリングと組み合わせれば、簡単にオートスケールさせられそうなのが良いところ。

結論

Rancherを使って格安Kubernetesクラスタを構築することができました。

ちなみに、HetznerはVPS以外にも、サーバー筐体をオークションという形式でレンタルするサービスがあります。(もちろんオペレーションはすべてネットワーク越し)。 ラインナップを見ているだけでも楽しいです。

Server auction - Hetzner Online GmbH