はじめに
少しローカルでk8sを試してみたくて今更ながらWSL2にminikube入れてみました。
また忘れてしまいそうなので、備忘録としてインストール手順のメモを残します。
環境
- Windows10 home
- version: 2004
- OSビルド:20279.1
- WSL2
- Docker
WSL2のインストール
公式ページの手順を参考にインストールしました。
Dockerのインストール
WSL2内で以下コマンドを実行し、インストールしました。
(自分は以前にCUDA on WSL2を試すときにDockerを入れたため、若干コマンドがうろ覚えですが以下でよかった気がします...)
shell
$ curl https://get.docker.com | sh
minikubeのインストール
基本的には公式ページの手順に沿ってインストールしました。
shell
# バイナリをダウンロード
$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
&& chmod +x minikube
# Minikube実行可能バイナリをパスに追加
$ sudo mkdir -p /usr/local/bin/
$ sudo install minikube /usr/local/bin/
kubectlのインストール
どうせ使うので、ついでにkubectlもインストールしておきます。
こちらも例にもれず、公式ページの手順に沿っていインストールしました。
shell
# 最新版のバイナリをダウンロード
$ curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl"
# バイナリを実行可能にして、実行パス内に放り込む
$ chmod +x ./kubectl
$ sudo mv ./kubectl /usr/local/bin/kubectl
動作確認
さっそくminikubeを起動させてみます。
shell
# dockerを起動(これをやっておかないと、以下コマンドでエラーが出てくる)
$ sudo service docker start
# minikubeをdocker上で起動(割り当てメモリーを制御したければ、--memory=8gとかで設定する)
$ minikube start --vm-driver=docker
😄 minikube v1.16.0 on Ubuntu 18.04
✨ Using the docker driver based on existing profile
👍 Starting control plane node minikube in cluster minikube
🏃 Updating the running docker "minikube" container ...
🐳 Preparing Kubernetes v1.20.0 on Docker 20.10.0 ...
🔎 Verifying Kubernetes components...
🌟 Enabled addons: storage-provisioner, default-storageclass
🏄 Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
# kubectlでkubernetesのAPIをたたいてみる
$ kubectl get node
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane,master 52m v1.20.0
# docker上で確認する
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0455498d5d7d gcr.io/k8s-minikube/kicbase:v0.0.15-snapshot4 "/usr/local/bin/entr…" 53 minutes ago Up 53 minutes 127.0.0.1:32771->22/tcp, 127.0.0.1:32770->2376/tcp, 127.0.0.1:32769->5000/tcp, 127.0.0.1:32768->8443/tcp minikube
お試しにnginxのPodも作ってみようと思います。
sample_nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
selector:
matchLabels:
app: nginx
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
shell
$ kubectl apply -f sample_nginx.yaml
deployment.apps/nginx created
$ kubectl expose deploy/nginx --port=80
service/nginx exposed
$ kubectl port-forward svc/nginx 8080:80
Forwarding from 127.0.0.1:8080 -> 80
Forwarding from [::1]:8080 -> 80
Handling connection for 8080
これでlocalhost:8080にアクセスしてみると、以下のような画面が表示されるかと思います。
最後に、使い終わったPodの掃除をしておきます。
$ kubectl delete deployment nginx
$ kubectl delete svc nginx
おわりに
今回は、自宅のWindows PCにminikubeをインストールしてサンプルを少し動かしてみました。
私自身がMLエンジニアなので、今後はMLに関わるところでminikubeを使って色々試したいと考えています。