はじめに
名前はよく聞くkubernetes(k8s)。
AI基盤な会社の面談前にAWS上で動かそうと思ったら、AWSアカウントが凍結されていた(securityがばがばのroleを作ってしまっていた様子)ため、できませんでした。
ローカル環境でk8sを動かすMinikubeという教材を教えていただいたので、電話経験13年、クラウド経験0の素人が公式チュートリアルをみながら建ててみました。
という意気込みで始めましたが、長くなってしまったので、本編では、WSL2+Docker for wondowsでコンテナを建てるところまでをお送りします。Minikubeは第二編で
まとめ
Minikubeのget startedを見て、コンテナを管理するつもりが、いつの間にかDocker Desktop on Windowsを使ってコンテナを作り、Djangoアプリを乗せる。にすり替わりましたが、どうやらコンテナは作れたようです。
構成イメージ
新しいコンテナができていることが確認できました。
チュートリアルも色々リンクがあるので、途中で目的がコンテナの上でDjangoアプリを
動かすにすり替わっていました。
参考文献
[1] Minikubeゲットスタート https://minikube.sigs.k8s.io/docs/start/
[2] Docker オリエンテーション https://docs.docker.com/get-started/
[3] Docker Desktop on Windows https://docs.docker.com/desktop/install/windows-install/
[4] Install Windows WSL2 https://docs.microsoft.com/en-us/windows/wsl/install
[5] Set up WSL2 https://docs.microsoft.com/en-us/windows/wsl/setup/environment
[6] Docker remote container on WSL2 https://docs.microsoft.com/en-us/windows/wsl/tutorials/wsl-containers
以下は作業メモです
Minikubeを使用してローカル環境でKubernetesを動かす
1. ツール(minikube)のインストール要件
minikubeは、ローカルのkubernetes 学習にフォーカス。
Dockerと、minikube startのコマンドが必要。
ツールのインストールについて知りたい場合は、公式のGet Started!のガイドに従ってください。
→ minkkube のGetting startedへ
1.1. minikube Getting started
必要なリソース
2CPU, 2GB memory, 20GB disc, Internet, Docker
→Ctrl + Alt + escape で確認
我が家は12CPUコア、32G memory、925G disc, Internetあり
だが、Dockerがない。
→Dockerチュートリアルへ
2. Docker Orientation and setup
Download
Linux/Mac/Windowsが選べる
→Windowsを選択
https://docs.docker.com/desktop/install/windows-install/In
2.1 Docker Desktop on Windows
https://docs.docker.com/desktop/install/windows-install/
・WSL 2 backendと Hyper Vの二種類ある。何が違う?
WSL2: LinuxをWindows上で直接実行???
Hyper-V:仮想マシン その上にLinuxを乗せる???
→Win11では、MSさんはWSL 2推しのようなので、WSL2を選択(2.1.a.節で調査内容を補足)
2.1.a. WSL2とHyperV補足
どちらもWindows上でLinuxを動かす機能。
Microsoft公式ドキュメントを見ると、Hyper-VのWin11の記事がなかった。
→最近はWSL2推しなのだろう。WSL2を使うことにします。
2.1.a.1. WSL2
Windows Subsystem for Linux
従来の仮想マシンまたはデュアルブート セットアップのオーバーヘッドなしで、ほとんどのコマンドライン ツール、ユーティリティ、アプリケーションなどを含む GNU/Linux 環境を、変更せずに Windows 上で直接実行できます。
// Mac OS Xの頃は、MacにWindowsデュアルブートしてたな。懐かしい。
2.1.a.2 Hyper V
Windows 上の仮想マシンとして複数のオペレーティング システムを実行
Hyper-V は、64 ビット版の Windows 10 Pro、Enterprise、および Education で使用できます。
私のPCはWin11のproなので、Hyper-Vは対象外?
2.2. 要件 for Docker Desktop on Windows
https://docs.docker.com/desktop/install/windows-install/
(1)Windows 11 64-bit: Home or Pro
→Pro なのでOK
(2)Enable the WSL 2 feature on Windows.
→後述 2.3.節でWSL2 有効化手順
(3)64-bit processor with Second Level Address Translation (SLAT)
//よくわからない。Win11 Pro の要件なので大丈夫そう
https://www.microsoft.com/ja-jp/windows/windows-11-specifications?r=1
クライアント Hyper-V 第2レベルのアドレス変換 (SLAT) 対応のプロセッサが必要です
(Windows Pro 以上のエディションで利用可能)。
(4)4GB system RAM
→ OK
(5)BIOS-level hardware virtualization support must be enabled
https://docs.docker.com/desktop/troubleshoot/topics/#virtualization
・Windowsの拡張機能で下記を有効化
Windows Subsystem for Linux
・BIOS画面でIntel Virtualization TechnologyをON
https://bce.berkeley.edu/enabling-virtualization-in-your-pc-bios.html
(6)Linux kernel update packageをインストール
→ 後述 2.3.1.節
2.3. WSL2を有効化
・Windows power shellを管理者権限で実行
・wsl --list --online
どれをインストールすればいいのかわからーん
NAME FRIENDLY NAME
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
openSUSE-42 openSUSE Leap 42
SLES-12 SUSE Linux Enterprise Server v12
Ubuntu-16.04 Ubuntu 16.04 LTS
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
→無印のUnuntuはよりも安定してそうなので、Long term supportの20.04にしておこう
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu 20.04 LSTのハード要件
2 GHz dual core processor
4 GiB RAM (system memory)
25 GB (8.6 GB for minimal) of hard-drive space (or USB stick, memory card or external drive but see LiveCD for an alternative approach)
VGA capable of 1024x768 screen resolution
Either a CD/DVD drive or a USB port for the installer media
Internet access is helpful
→問題なさそう
2.3.1. Ubuntuのインストール
Microsoftのベストプラクティス https://docs.microsoft.com/en-us/windows/wsl/setup/environment
・Ubuntuのインストール
Windows Power SHellで
wsl --install -d Ubuntu-20.04
・UbuntuのUsernameとパスワードを設定
適当に設定
・Ubuntuのアップデート
sudo apt update && sudo apt upgrade
・Windows Terminalのインストール(Windowsのおすすめ)
Power ShellとUbuntuのウィンドウをタブで開けるのでよさげ
・Vscodeのインストール(Windowsのおすすめ)
https://docs.microsoft.com/en-us/windows/wsl/tutorials/wsl-vscode
・VSCodeのダウンンロード&インストール
https://code.visualstudio.com/download
・Set up version management with Git
省略
・Set up remote development containers with Docker
これだ!やっとDockerにたどり着いた。
2.4. Microsoft Get started with Docker remote containers on WSL 2
https://docs.microsoft.com/en-us/windows/wsl/tutorials/wsl-containers
Dockerは、コンテナを使ってアプリを、作って、デプロイして、走らせるツール。
ライブラリとかもセットでコンテナに入ってるので、マシンによらずにコンテナ内の
アプリは実行できる。
2.4.1 事前準備
・Win 11 :ホストOS? OK
・WSL2+Ubuntu :ハイパーバイザ+ゲストOS? OK
・Visual Studio Code :code, debug用ツール OK
・Windows terminal :複数のterminalを開けるツール OK
・Docker ID作成 :Personal は無料で作れるので作成 OK
・Docer desktop licence :合意 OK
2.4.2. Install Docker Desktop
https://docs.docker.com/desktop/windows/wsl/
・Docker Desktop for windowsをダウンロード
・インストール
・設定
Settings > General >Use WSL 2 based engine
・Enabling Docker support in WSL 2 distros
Version 2か確認
wsl.exe -l -v
NAME STATE VERSION
* Ubuntu-20.04 Stopped 2
・Docker Desktop
Settings > Resources > WSL Integration.
Ubuntu-20.04をEnableにする。
Terminal Ubuntuでdocerのバージョン確認
20.10.17! Docker入った!
ubukanegae0820@gare_shun:~$ docker --version
Docker version 20.10.17, build 100c701
ubukanegae0820@gare_shun:~$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
2.4.2.1. Develop in remote containers using VS Code
VS Codeに拡張を追加
・Remote-WSL extension:WSL上のOS(Ubuntu-20.04)を開く
・Remote-Containers extension:こて名の中の、repo or プロジェクトフォルダが開ける。
・Docker extension:VS Codeからコンテナアプリを管理、実装、削除。
2.5. コンテナの上に、Django app(Python用のWeb app framework)を乗せる
2.5.1. HelloWorld-Django web appのダウンロード
TerminalのUbuntu上で
ubukanegae0820@gare_shun:~$ git clone https://github.com/mattwojo/helloworld-django.git
ubukanegae0820@gare_shun:~$ cd helloworld-django
ubukanegae0820@gare_shun:~/helloworld-django$ code .
VS Codeが開く
2.5.2. フォルダを開く
Remote-Containers: Open Folder in Container.
でエラーになった。
The command 'docker' could not be found in this WSL 2 distro.
We recommend to activate the WSL integration in Docker Desktop settings.
For details about using Docker Desktop with WSL 2, visit:
https://docs.docker.com/go/wsl2/
https://docs.docker.com/go/wsl2/ へ
Docker DesktopのアプリをWindows上で立ち上げてないとエラーになる様子。
再度 Remote-Containers: Open Folder in Container.
\wsl.localhost\Ubuntu-20.04\home\ubukanegae0820\helloworld-django
2.5.3 Python 3を選択
.devcontainer folder ができて、
Dockerfile
devcontainer.json
が生成される。
2.5.4 バージョン確認
→コンテナの上でアプリが動いた
コンテナができてました。
Docker Desktopを開くと、新しいコンテナ「vsc-hellowworld」ができた!
やっと、Minikubeに必要なDockerの環境ができました。