This page looks best with JavaScript enabled

[kubernetes][minikube]公式チュートリアルの「Hello Minikube」を試してみる

 ·  ☕ 4 min read  ·  ✍️ Inomaso

kubernetesの公式チュートリアルにある「Hello Minikube」を、ローカルのminikubeで動かしてみました。

ちなみにブラウザ上でも無償のkubernetes環境が提供されているので、ローカルにminikubeをインストールしていなくても試すことができます。

環境


  • macOS Catalina 10.15.6
  • kubernetes 1.19.0
  • minikube 1.13.0

Minikube起動


ローカルのminikube起動します。

1
minikube start
Darwin 10.15.6 上の minikube v1.13.0
✨ プロフィールを元に、 virtualbox ドライバを使用します
👍 コントロールプレーンのノード minikube を minikube 上で起動しています
🔄 既存の virtualbox VM を “minikube” のために再起動しています…
🐳 Docker 19.03.12 で Kubernetes v1.19.0 を準備しています…
🔎 Kubernetes コンポーネントを検証しています…
🌟 有効なアドオン: default-storageclass, storage-provisioner
🏄 Done! kubectl is now configured to use “minikube” by default

ブラウザーでKubernetesダッシュボードを開きます

1
minikube dashboard
🔌 ダッシュボードを有効化しています…
🤔 ダッシュボードの状態を確認しています…
🚀 プロキシを起動しています…
🤔 プロキシの状態を確認しています…
🎉 Opening http://127.0.0.1:52375/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser…

Deployment作成


Podを管理するDeploymentを作成します。
Podは提供されたDockerイメージを元にコンテナを実行します。

1
kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
deployment.apps/hello-node created

Deploymentを確認します。

1
kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
hello-node 0/1 1 0 64s

Podを確認します。

1
kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-node-7567d9fdc9-sg6jl 1/1 Running 0 2m48s

クラスタイベントを確認します。

1
kubectl get events
LAST SEEN TYPE REASON OBJECT MESSAGE
3m47s Normal Scheduled pod/hello-node-7567d9fdc9-sg6jl Successfully assigned default/hello-node-7567d9fdc9-sg6jl to minikube
3m47s Normal Pulling pod/hello-node-7567d9fdc9-sg6jl Pulling image “k8s.gcr.io/echoserver:1.4”
2m31s Normal Pulled pod/hello-node-7567d9fdc9-sg6jl Successfully pulled image “k8s.gcr.io/echoserver:1.4” in 1m16.215709596s
~

kubectlで設定を確認します。

1
kubectl config view

apiVersion: v1
clusters:

  • cluster:
    certificate-authority: /Users/inomaso/.minikube/ca.crt
    server: https://192.168.99.100:8443
    name: minikube
    contexts:
  • context:
    cluster: minikube
    user: minikube
    name: minikube
    current-context: minikube
    kind: Config
    preferences: {}
    users:
  • name: minikube
    user:
    client-certificate: /Users/inomaso/.minikube/profiles/minikube/client.crt
    client-key: /Users/inomaso/.minikube/profiles/minikube/client.key

Service作成


kubectl exposeコマンドを使用してPodをインターネットに公開します。
--type=LoadBalancerフラグはServiceをクラスタ外部に公開したいことを示しています。

1
kubectl expose deployment hello-node --type=LoadBalancer --port=8080
service/hello-node exposed

作成したServiceを確認します。

1
kubectl get services

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-node LoadBalancer 10.96.10.228 8080:32577/TCP 9m45s
kubernetes ClusterIP 10.96.0.1 443/TCP 5h35m

ロードバランサーをサポートするクラウドプロバイダーでは、Serviceにアクセスするための外部IPアドレスが提供されます。 Minikube では、LoadBalancerタイプはminikube serviceコマンドを使用した接続可能なServiceを作成します。

1
minikube service hello-node
|———–|————|————-|—————————–|
| NAMESPACE | NAME | TARGET PORT | URL |
|———–|————|————-|—————————–|
| default | hello-node | 8080 | http://192.168.99.100:32577 |
|———–|————|————-|—————————–|
🎉 Opening service default/hello-node in default browser…

アドオンの有効化


Minikubeはビルトインのアドオンがあり、有効化、無効化、あるいはローカルのKubernetes環境に公開することができます。

サポートされているアドオンをリストアップします。

1
minikube addons list
|—————————–|———-|————–|
| ADDON NAME | PROFILE | STATUS |
|—————————–|———-|————–|
| ambassador | minikube | disabled |
| dashboard | minikube | enabled ✅ |
| default-storageclass | minikube | enabled ✅ |
| efk | minikube | disabled |
| freshpod | minikube | disabled |
| gcp-auth | minikube | disabled |
| gvisor | minikube | disabled |
| helm-tiller | minikube | disabled |
| ingress | minikube | disabled |
| ingress-dns | minikube | disabled |
| istio | minikube | disabled |
| istio-provisioner | minikube | disabled |
| kubevirt | minikube | disabled |
| logviewer | minikube | disabled |
| metallb | minikube | disabled |
| metrics-server | minikube | disabled |
| nvidia-driver-installer | minikube | disabled |
| nvidia-gpu-device-plugin | minikube | disabled |
| olm | minikube | disabled |
| pod-security-policy | minikube | disabled |
| registry | minikube | disabled |
| registry-aliases | minikube | disabled |
| registry-creds | minikube | disabled |
| storage-provisioner | minikube | enabled ✅ |
| storage-provisioner-gluster | minikube | disabled |
|—————————–|———-|————–|

例としてmetrics-serverのアドオンを有効化します。

1
minikube addons enable metrics-server
🌟 The ‘metrics-server’ addon is enabled

作成されたPodとサービスを確認します。

1
kubectl get pod,svc -n kube-system

NAME READY STATUS RESTARTS AGE
pod/coredns-f9fd979d6-qmj79 1/1 Running 4 5h56m
pod/etcd-minikube 1/1 Running 4 5h56m
pod/kube-apiserver-minikube 1/1 Running 4 5h56m
pod/kube-controller-manager-minikube 1/1 Running 4 5h56m
pod/kube-proxy-bdrd6 1/1 Running 4 5h56m
pod/kube-scheduler-minikube 1/1 Running 4 5h56m
pod/metrics-server-d9b576748-c5r9x 1/1 Running 0 28s
pod/storage-provisioner 1/1 Running 7 5h56m

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kube-dns ClusterIP 10.96.0.10 53/UDP,53/TCP,9153/TCP 5h56m
service/metrics-server ClusterIP 10.108.110.125 443/TCP 28s

metrics-serverを無効化します。

1
minikube addons disable metrics-server
🌑 「metrics-server」アドオンは無効化されています

クリーンアップ


クラスタに作成したリソースをクリーンアップします。

1
2
kubectl delete service hello-node
kubectl delete deployment hello-node
service “hello-node” deleted
deployment.apps “hello-node” deleted

(オプション)Minikubeの仮想マシン(VM)を停止します。

1
minikube stop
✋ ノード “minikube” を停止しています…
🛑 1台のノードが停止しました。

(オプション)MinikubeのVMを削除します。

1
minikube delete
🔥 virtualbox の「minikube」を削除しています…
💀 クラスタ “minikube” の全てのトレースを削除しました。
Share on

comments powered by Disqus