※このブログではサーバー運用、技術の検証等の費用のため広告をいれています。
記事が見づらいなどの問題がありましたらContactからお知らせください。

次のページ>
kubectlでKubernetesを操作して簡単なサーバーを起動してみよう

【Ubuntu18.04】KVMでMinikubeのKubernetes環境を構築

kubernetes Minikube インフラ kubectl k8s サーバー開発

投稿日:2020年10月1日

このエントリーをはてなブックマークに追加
この記事ではKubernetes初心者向けに、ローカルのUbuntu18.04LTSにKubernetesの環境を作成する方法について解説しています。

はじめに

Minikubeとは

Minikubeはローカルに小規模なKubernetes環境を作成することのできるパッケージです。MinikubeはシングルノードのKubernetesクラスタをVirtualMachineの上に実行します。

一般的にKubernetesの学習やKubernetes環境の使用を前提としたプロジェクトの開発環境の構築などに利用されます。

この記事は公式サイトKubernetesの公式サイトを参考にしています。

実行環境

この記事は以下の環境で実行されました。

  • OS:Ubuntu 18.04LTS
  • PC:HP Spectre X360
  • CPU:Core i-7 8550U
  • RAM:16GB

セットアップ

はじめる前に

MinikubeはVMでKubernetesの環境を作成する関係から、実行するPCのCPUがバーチャライゼーションテクノロジー(Virtualization Technology:VT)という技術に対応してある必要があります。
対応しているかどうかは以下のコマンドで確認できます。何かしらの出力があればそのPCのCPUは対応しています。

ターミナル
$ grep -E --color 'vmx|svm' /proc/cpuinfo

自分の場合はズラーッと、いろいろ出力してくれたので問題なさそうです。

kubectlのインストール

Kubernetesでは『アプリケーションのデプロイ』、『リソースの点検・管理』、『ログの監視』など、ほとんどの操作をクラスタに命令を送ることで実行させます。その命令をクラスタに送るコマンドラインツールがkubectlです。

ここではkubectlをインストールします。

インストールの前にバージョンについて以下の点に注意します。

  • kubectlのバージョンはクラスタのバージョンとマイナーバージョンの差が1より大きくなってはいけない(kubectl==1.2の時、masterのバージョンは1.1以上1.3以下にする)。

基本的にはできる限り新しいバージョンを使うほうが良いようです。

上の説明を読む限りバージョン周りがややこしいので、すでに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のインストールはこれで完了ですが、追加でコマンドのオートコンプリートの設定をしておくと色々便利です。

Hypervisorのインストール

実行環境の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の調べ方は公式サイトを見に行きましょう。

▲BIOSに入る
▲VTをEnabledにする
▲保存して終了

これで再起動してもう一度コマンドをうって確認してみます。

ターミナル
$ 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

Minikubeのインストール

ターミナル
$ 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のいろんな機能を使っていきたいと思います!!

このエントリーをはてなブックマークに追加

次のページ>
kubectlでKubernetesを操作して簡単なサーバーを起動してみよう

関連記事

記事へのコメント