Minikube
Minikube
minikube はローカル環境で Kubernetes 環境を設定するツールである。
minikube start | minikube
| # x64
curl -LO https://github.com/kubernetes/minikube/releases/latest/download/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
# ARM64
curl -LO https://github.com/kubernetes/minikube/releases/latest/download/minikube-linux-arm64
sudo install minikube-linux-arm64 /usr/local/bin/minikube && rm minikube-linux-arm64
|
Docker がインストールされていないと動かない。またユーザーを docker グループに所属させる必要がある。
kubectlはminikubeに組み込まれている。エイリアスでkubectlがあるかのように使える。
| # kubectlを使う
$ minikube kubectl -- get pods
$ alias kubectl="minikube kubectl --"
$ kubectl get pods
|
Nginx を動かす
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | $ kompose convert -o ./nginx-manifests/ --volumes hostPath
$ minikube start
$ kubectl apply -f ./nginx-manifests/
$ kubectl port-forward service/nginx 8080:8080
$ minikube service nginx
$ kubectl delete -f ./nginx-manifests/
# 再開可能な状態で止める
$ minikube stop
# 完全消去する
$ minikube delete
|
kubectl applyを実行したときに Deployment でエラーが出るとき Deployment を削除してやり直す。
| $ kubectl apply -f ./nginx-manifests/
service/nginx unchanged
The Deployment "nginx" is invalid: spec.selector: Invalid value: {"matchLabels":{"io.kompose.service":"nginx"}}: field is immutable
$ kubectl delete deployment nginx
|
自作のイメージを起動する
| nextjs-example-compose.yml |
|---|
| services:
nextjs-example:
image: 192.168.11.42:8085/nextjs-example:latest
ports:
- "3000:3000"
restart: always
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 | # docker-compose.ymlを変換する
$ kompose convert --file nextjs-example-compose.yml -o ./nextjs-example-manifests/
# Minikubeを起動する
$ minikube start --insecure-registry="192.168.11.42:8085"
# マニフェストを適用する
$ kubectl apply -f ./nextjs-example-manifests/
# Podを確認する
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nextjs-example-6fbf69d677-zwql8 0/1 ContainerCreating 0 3s
# Serviceを確認する
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 14s
nextjs-example ClusterIP 10.106.105.156 <none> 3000/TCP 7s
# ポートフォワーディングする
$ kubectl port-forward service/nextjs-example 3000:3000
# 完全消去する
$ minikube delete
|