概要
Kubernetes The Hard Wayというのは、Kubernetesクラスタ作成チュートリアルで、他の構築手段と比べて**The Hard Way(難易度の高いやり方)**という特徴があります。
kubeadmやminikubeを使ったワンコマンドの構築ではなく、より原始的に、1ステップずつコマンドを実行し、丁寧に(?)クラスタを作成する手法です。
これを体験することで、普段は便利コマンドに隠されてしまっているKubernetesの構築手順をを理解することができ、実際のクラスタ運用でも役に立つ知識を身につけることができます。
ということで早速試してみたいのですが、オリジナルのKubernetes The Hard WayはGCP(Google Cloud Platform)上での手順となっており、課金が発生しますし、また本来のKubernetes構築とは関係ないGCPのファイアーウォールの設定なども実施する必要があります。もっと気軽にThe Hard Wayしたい!!と思って調べていると、素晴らしいものがありました。
これはvagrant(とvirtualbox)を使ってローカル環境でKubernetes The Hard Wayができるというものです。
Kubernetes the hard way with vagrant
オリジナルは https://github.com/kinvolk/kubernetes-the-hard-way-vagrant のようですが、https://github.com/kenfdev/kubernetes-the-hard-way-vagrant の方がオススメです。
kenfdev版の特徴
- オリジナルと同じcontainerdを使っている (kinvolkはcri-oを使っている)
- オリジナルで最近追加されたgVisorを使っている
- オリジナルと同じpod-cidr(kinvolkはオリジナルとは違うcidr)
- オリジナルのドキュメントと紐づいた簡単に実行できるスクリプト群
特に最後の点が非常に便利で、kenfdev版のscripts/k8s-the-hard-way以下にあるスクリプトがオリジナルのドキュメントと対応したファイル名となっており、オリジナルのドキュメントをみつつ、コマンドだけはvagrant版を使うという使い方ができます。
vagrant版のクラスタ構成
全部で7台のVMが構築されます。実行するマシンにはそれなりのスペックが要求されます。
- LB
- kube-apiserverを束ねるロードバランサ役のVMです。
- controller*3
- kubernetesのmasterのVMです。etcdもここで動きます
- worker*3
- kubernetesのworkerのVMです。
進め方
基本的にオリジナルのドキュメントをみつつ、コマンドはkenfdev版を使う、というやり方で進めました。gcloudコマンドは全て実行せずに飛ばしました。
ルーティングの設定などはvagrantであらかじめ実行する方式となっており https://github.com/kenfdev/kubernetes-the-hard-way-vagrant/tree/master/scripts/bootstrap ここからその内容を確認できます。
はまったところ
ほとんどそのまま実行するだけなのでハマるところはないのですが
vagrant-scpを連続すると何かおかしい
Received disconnect from 127.0.0.1 port 2202:2: Too many authentication failures
こんなエラーが出ました。IdentitiesOnly=yes by jonasfj · Pull Request #21 · invernizzi/vagrant-scp · GitHubが似たような問題だったので参考にしつつ
Host *
IdentitiesOnly=yes
とすれば出なくなりました。
感想
腰が重かったKubernetes The Hard Wayでしたが、vagrant版を使うことで、気軽に試すことができました。