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、Linode 、Amazon EC2といった既存サービスを指定して、インスタンスの作成からそこにKubernetesコンポーネントを導入するところまで一気に実行する仕組みがあります。デフォルトではこれらに加えて、vSphereなどのNode DriverがActivateされていますが、Hetzner Cloudはそもそもないので、自前で導入/Activateする必要があります。
しかしNode Driverの追加はポチポチでできます(以下を参考に)。
- Rancherのグローバルメニューから、
Tools
->Drivers
Node Drivers
->Add Node Driver
を選択- フォームに以下を入力
- Download URL
- https://github.com/JonasProgrammer/docker-machine-driver-hetzner/releases/download/3.0.0/docker-machine-driver-hetzner_3.0.0_linux_amd64.tar.gz (ビルド済みのHetzner Cloud Docker machine driver)
- Custom UI URL
- Whitelist Domains
- storage.googleapis.com (UIファイルへのアクセスのため)
- Download URL
Create
をクリック
Node Templateを追加
さて、Node Driverが追加されたので、あとはこれを使ってNode Templateを作成するだけです。Node Templateは、Kubernetesをプロビジョニングする際に参照される諸情報。例えば、インスタンスのサイズとか、OSイメージとか、リージョンをテンプレートとして登録できるます。
Rancher Docs: Managing Node Templates
登録したHetzner Cloud Node Driverを使ってNode Templateを登録します。
- ユーザーアバターから
Node Template
を選択する(なぜかNode Templateはユーザー設定で管理されるらしい) Add Template
を選択- すると、以下のように
Hetzner
がリストの中に表示されている。TokenにHetzner側から発行したAPI Tokenを入れ、Configure Server
をクリック - 最低限以下を入力しておけばOKでしょう
- Region
- Image
- Size
- Name
Create
をクリック
Kubernetesクラスタをプロビジョニング
マスターノードとワーカーノード1台ずつのクラスタを構築。
- グローバルメニューから
Clusters
->Add Cluster
をクリック Create a new Kubernetes cluster
の Infrastructure Providerを選択する部分で、Hetznerを選択- Formに従って、
Node Template
でさきほどのテンプレートのNameを選択する - 以下のようにコンポーネントをチェックするとマスターノードとワーカーノードが1つずつとなる
これで待っていれば、クラスタが出来上がり。
クラスタの編集からポチポチとノード数を増やすだけで自動的にHetzner Cloudにインスタンスが生成され、スケールできるようになりました。 なんらかのモニタリングと組み合わせれば、簡単にオートスケールさせられそうなのが良いところ。
結論
Rancherを使って格安Kubernetesクラスタを構築することができました。
ちなみに、HetznerはVPS以外にも、サーバー筐体をオークションという形式でレンタルするサービスがあります。(もちろんオペレーションはすべてネットワーク越し)。 ラインナップを見ているだけでも楽しいです。