minikubeでkubernetesを起動してみる
minikubeでkubernetesを起動してみたメモです
そろそろkubernetesを触れておこうと思って、チュートリアルをやってみようと思います。
https://minikube.sigs.k8s.io/docs/start/
https://kubernetes.io/ja/docs/setup/learning-environment/minikube/
下記バージョンで試してみます。
- macOS mojave 10.14.6
- minikube 1.25.2
- kubernetes 1.23.3
- kubectl 1.22
minikube
パブリッククラウドのマネージドkubernetesを利用するのは敷居が高いので、
出来ることが制限されますが、ローカルで試せるminikubeを使用してみます。
https://minikube.sigs.k8s.io/docs/start/
install
公式から下記コマンドでインストールします
❯ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64 ❯ sudo install minikube-darwin-amd64 /usr/local/bin/minikube
確認
❯ minikube version minikube version: v1.25.2 commit: 362d5fdc0a3dbee389b3d3f1034e8023e72bd3a7
kubectl
kubernetesのCLIであるkubectlをインストールします。
brewでインストールします
❯ brew install kubectl ❯ kubectl version --client Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.5", GitCommit:"5c99e2ac2ff9a3c549d9ca665e7bc05a3e18f07e", GitTreeState:"clean", BuildDate:"2021-12-16T08:38:33Z", GoVersion:"go1.16.12", Compiler:"gc", Platform:"darwin/amd64"}
起動
minikubeを起動します。
kubernetesのバージョンを指定することもできますが、何も指定しないと1.23.3が起動しました。
❯ minikube start 😄 Darwin 10.14.6 上の minikube v1.25.2 ✨ docker ドライバーが自動的に選択されました。他の選択肢: hyperkit, virtualbox, ssh 👍 minikube クラスター中のコントロールプレーンの minikube ノードを起動しています 🚜 ベースイメージを取得しています... 💾 Kubernetes v1.23.3 のダウンロードの準備をしています > preloaded-images-k8s-v17-v1...: 505.68 MiB / 505.68 MiB 100.00% 18.24 Mi > gcr.io/k8s-minikube/kicbase: 379.06 MiB / 379.06 MiB 100.00% 10.45 MiB p 🔥 docker container (CPUs=2, Memory=1985MB) を作成しています... 🐳 Docker 20.10.12 で Kubernetes v1.23.3 を準備しています... ▪ kubelet.housekeeping-interval=5m ▪ 証明書と鍵を作成しています... ▪ コントロールプレーンを起動しています... ▪ RBAC のルールを設定中です... 🔎 Kubernetes コンポーネントを検証しています... ▪ gcr.io/k8s-minikube/storage-provisioner:v5 イメージを使用しています 🌟 有効なアドオン: storage-provisioner, default-storageclass 🏄 完了しました! kubectl が「"minikube"」クラスタと「"default"」ネームスペースを使用するよう構成されました
確認
下記のコマンドでminikubeのpodの状態を確認します。
po
はリソースタイプpods
の省略系です。
https://kubernetes.io/ja/docs/reference/kubectl/overview/#resource-types
❯ kubectl get po -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-64897985d-p7nfx 1/1 Running 1 (26s ago) 38m kube-system etcd-minikube 0/1 Running 1 (26s ago) 38m kube-system kube-apiserver-minikube 1/1 Running 1 (26s ago) 38m kube-system kube-controller-manager-minikube 1/1 Running 1 (26s ago) 38m kube-system kube-proxy-spkw9 1/1 Running 1 (26s ago) 38m kube-system kube-scheduler-minikube 1/1 Running 1 (26s ago) 38m kube-system storage-provisioner 1/1 Running 2 (26s ago) 38m
echoserver
サーバの情報をそのまま表示するechoserverというイメージを使ってみます。
はじめにDeploymentを作成します。
❯ kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4
deployment.apps/hello-minikube created
exposeで8080 portでServiceを公開します。
❯ kubectl expose deployment hello-minikube --type=NodePort --port=8080 service/hello-minikube exposed
podの状態を確認し、Runningになっていることを確認
❯ kubectl get pods NAME READY STATUS RESTARTS AGE hello-minikube-7bc9d7884c-kfpgn 1/1 Running 0 12m
port-forwardでlocalの7080ポートをhello-minikubeの8080ポートへ転送します。
❯ kubectl port-forward service/hello-minikube 7080:8080 Forwarding from 127.0.0.1:7080 -> 8080 Forwarding from [::1]:7080 -> 8080 Handling connection for 7080
ブラウザでhttp://localhost:7080/
にアクセスすると下記の情報が表示されました。
CLIENT VALUES: client_address=127.0.0.1 command=GET real path=/ query=nil request_version=1.1 request_uri=http://localhost:8080/ SERVER VALUES: server_version=nginx: 1.10.0 - lua: 10001 HEADERS RECEIVED: accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 accept-encoding=gzip, deflate accept-language=ja,en-US;q=0.7,en;q=0.3 connection=keep-alive host=localhost:7080 sec-fetch-dest=document sec-fetch-mode=navigate sec-fetch-site=cross-site sec-fetch-user=?1 upgrade-insecure-requests=1 user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:97.0) Gecko/20100101 Firefox/97.0 BODY: -no body in request-
describeで詳細な情報を確認できます。
❯ kubectl describe pod hello-minikube Name: hello-minikube-7bc9d7884c-kfpgn Namespace: default Priority: 0 Node: minikube/192.168.49.2 Start Time: Tue, 08 Mar 2022 01:44:11 +0900 Labels: app=hello-minikube pod-template-hash=7bc9d7884c Annotations: <none> Status: Running IP: 172.17.0.5 IPs: IP: 172.17.0.5 Controlled By: ReplicaSet/hello-minikube-7bc9d7884c Containers: echoserver: Container ID: docker://4d0224ccabfd4c162ae47fcbf05cb71c112f42e1a98bf60f222c9b130f53a985 Image: k8s.gcr.io/echoserver:1.4 Image ID: docker-pullable://k8s.gcr.io/echoserver@sha256:5d99aa1120524c801bc8c1a7077e8f5ec122ba16b6dda1a5d3826057f67b9bcb Port: <none> Host Port: <none> State: Running Started: Tue, 08 Mar 2022 01:44:17 +0900 Ready: True Restart Count: 0 Environment: <none> Mounts: /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-pbqpp (ro) Conditions: Type Status Initialized True Ready True ContainersReady True PodScheduled True Volumes: kube-api-access-pbqpp: Type: Projected (a volume that contains injected data from multiple sources) TokenExpirationSeconds: 3607 ConfigMapName: kube-root-ca.crt ConfigMapOptional: <nil> DownwardAPI: true QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 14m default-scheduler Successfully assigned default/hello-minikube-7bc9d7884c-kfpgn to minikube Normal Pulling 14m kubelet Pulling image "k8s.gcr.io/echoserver:1.4" Normal Pulled 14m kubelet Successfully pulled image "k8s.gcr.io/echoserver:1.4" in 5.429185047s Normal Created 14m kubelet Created container echoserver Normal Started 14m kubelet Started container echoserver ✋ 「minikube」ノードを停止しています... 🛑 SSH 経由で「minikube」の電源をオフにしています... 🛑 1 台のノードが停止しました。
delete services
でhello-minikube Serviceを削除します。
❯ kubectl delete services hello-minikube service "hello-minikube" deleted
delete deployment
でhello-minikube Deploymentを削除します
❯ kubectl delete deployment hello-minikube deployment.apps "hello-minikube" deleted
minikubeクラスタを停止します
❯ minikube stop ✋ 「minikube」ノードを停止しています... 🛑 SSH 経由で「minikube」の電源をオフにしています... 🛑 1 台のノードが停止しました。
minikubeクラスタを削除します。
❯ minikube delete 🔥 docker の「minikube」を削除しています... 🔥 コンテナー「minikube」を削除しています... 🔥 /Users/JP21326/.minikube/machines/minikube を削除しています... 💀 クラスター「minikube」の全てのトレースを削除しました。
おわり。