投稿日:2020年10月1日
この記事ではKubernetes初心者向けに、ローカルのUbuntu18.04LTSにKubernetesの環境を作成する方法について解説しています。
Minikubeはローカルに小規模なKubernetes環境を作成することのできるパッケージです。MinikubeはシングルノードのKubernetesクラスタをVirtualMachineの上に実行します。
一般的にKubernetesの学習やKubernetes環境の使用を前提としたプロジェクトの開発環境の構築などに利用されます。
この記事は公式サイトKubernetesの公式サイトを参考にしています。
この記事は以下の環境で実行されました。
MinikubeはVMでKubernetesの環境を作成する関係から、実行するPCのCPUがバーチャライゼーションテクノロジー(Virtualization Technology:VT)という技術に対応してある必要があります。
対応しているかどうかは以下のコマンドで確認できます。何かしらの出力があればそのPCのCPUは対応しています。
$ grep -E --color 'vmx|svm' /proc/cpuinfo
自分の場合はズラーッと、いろいろ出力してくれたので問題なさそうです。
Kubernetesでは『アプリケーションのデプロイ』、『リソースの点検・管理』、『ログの監視』など、ほとんどの操作をクラスタに命令を送ることで実行させます。その命令をクラスタに送るコマンドラインツールがkubectlです。
ここではkubectlをインストールします。
インストールの前にバージョンについて以下の点に注意します。
基本的にはできる限り新しいバージョンを使うほうが良いようです。
上の説明を読む限りバージョン周りがややこしいので、すでにkubectlが入っている場合にはややこしいので設定ファイルと合わせてアンインストールしておきましょう。
$ snap remove kubectl
$ sudo rm /usr/local/bin/kubectl
$ gcloud components remove kubectl
$ sudo apt-get remove kubectl
$ sudo rm -r -f ~/.kube
実行する環境のOSがUbuntuや一部のLinuxディストリビューションの場合、パッケージマネージャのsnapを使用して簡単に最新のkubectlをインストールできます。
$ snap install kubectl --classic
$ kubectl version --client # インストールの確認
kubectlのインストールはこれで完了ですが、追加でコマンドのオートコンプリートの設定をしておくと色々便利です。
実行環境のOSがLinuxの場合、MinikubeはVirtualMachineではなくそのままホストでKubernetesを実行することもできます。
しかしその場合、ローカルのPCにセキュリティの脆弱性を産んでしまう可能性やローカルの環境自体を壊してしまう可能性があります。
自分はKubernetes初心者であるため、リスクを減らすためにKVM(Kernel-based Virtual Machine)という仮想環境を構築します。
以下のコマンドははじめにMinikubeが使用可能かどうか確認したコマンドとほとんど同じです。出力が0より大きければそのCPUはKVMを使用できます。
$ grep -Eoc '(vmx|svm)' /proc/cpuinfo
CPU自体はサポートしていてもBIOSの設定でVTがオフになっている可能性もあります。
環境が使用できるようになっているかどうかはkvm-okコマンドで確認できます。
KVM acceleration can be usedと表示されれば使用できます。
$ sudo apt update
$ sudo apt install cpu-checker
(base) ogihara@ubuntu:~$ kvm-ok
INFO: /dev/kvm does not exist
HINT: sudo modprobe kvm_intel
INFO: For more detailed results, you should run this as root
HINT: sudo /usr/sbin/kvm-ok
自分のPCはまだ使用できる設定になっていないようです。出力に表示されたコマンドを実行してみます。
$ sudo /usr/sbin/kvm-ok
INFO: /dev/kvm does not exist
HINT: sudo modprobe kvm_intel
INFO: Your CPU supports KVM extensions
INFO: KVM (vmx) is disabled by your BIOS
HINT: Enter your BIOS setup and enable Virtualization Technology (VT),
and then hard poweroff/poweron your system
KVM acceleration can NOT be used
詳しい手順を出力してくれました。
BIOSに入ってVirtualization Technology (VT)を有効化して再起動するよううながされました。指示に従ってみます。HPのPCの場合、PCに電源をいれてすぐにF10キーを押すことでBIOSにはいれます。
ちなみにBIOSの入り方、設定方法はメーカー、機種ごとに違うので自分のPCのBIOSの調べ方は公式サイトを見に行きましょう。
これで再起動してもう一度コマンドをうって確認してみます。
$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
これでやっとKVMが使用可能になりました。
早速KVMと、追加で仮想環境のマネジメントツールをインストールします。
$ sudo apt install qemu-kvm libvirt-bin bridge-utils virtinst virt-manager ubuntu-vm-builder
インストールが完了するとlibvirtのデーモンが自動的に起動します。
ちゃんと起動しているか確認してみましょう。
$ sudo systemctl is-active libvirtd
active
Minikubeはdefaultというネットワークが必要になるそうです。コマンドで作成します。
$ virsh net-autostart default
$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
&& chmod +x minikube
$ sudo mkdir -p /usr/local/bin/
$ sudo install minikube /usr/local/bin/
ちゃんとインストールできたか、実際にうごかして確認をしてみます。
Minikubeの起動はdriverの指定が必要になります。今回のようにdriverはKVMを使用するので--driver=kvm2というオプションをつけます。driverの値に何の値を設定するべきか詳しくは公式ドキュメントを確認すると良いでしょう。
またdriverとしてKVMを使用する場合にはKVMのQEMU URIもオプションで渡してあげる必要があります。このQEMU URIはKVMのインストールの際に一緒にインストールした管理ツールのパッケージのコマンドvirsh uriで確認できます。デフォルトではqemu:///sessionです。この場合--kvm-qemu-uri qemu:///sessionというオプションをつけます。
ではコマンドをうってスタートさせましょう。
$ virsh uri
qemu:///system
$ minikube start --driver=kvm2 --kvm-qemu-uri qemu:///system
上のコマンドでもしエラーが出るようならminikube delete --all --purgeコマンドで一旦全部キレイにしてから実行すれば上手くいくかも?
動いているか確認します。
$ minikube status
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
上のように表示されればOKです!
とりあえず問題なく動くことが確認できたので、一旦minikubeは終了させておきます。
$ minikube stop
とりあえずローカルの環境にMinikubeをインストールしてkubernetesを色々試せるような環境の構築が完了しました!
次の記事からはKubernetesのいろんな機能を使っていきたいと思います!!