Hello Minikube
このチュートリアルでは、MinikubeとKatacodaを使用して、Kubernetes上でサンプルアプリケーションを動かす方法を紹介します。Katacodaはブラウザで無償のKubernetes環境を提供します。
目標
- Minikubeへのサンプルアプリケーションのデプロイ
- アプリケーションの実行
- アプリケーションログの確認
始める前に
このチュートリアルはNGINXを利用してすべての要求をエコーバックするコンテナイメージを提供します。
Minikubeクラスターの作成
-
Launch Terminal をクリックしてください
minikube start
を実行してください。
-
ブラウザーでKubernetesダッシュボードを開いてください:
minikube dashboard
-
Katacoda環境のみ:ターミナルペーン上部の+ボタンをクリックしてから Select port to view on Host 1 をクリックしてください。
-
Katacoda環境のみ:
30000
を入力し、Display Portをクリックしてください。
Deploymentの作成
KubernetesのPod は、コンテナの管理やネットワーキングの目的でまとめられた、1つ以上のコンテナのグループです。このチュートリアルのPodがもつコンテナは1つのみです。Kubernetesの Deployment はPodの状態を確認し、Podのコンテナが停止した場合には再起動します。DeploymentはPodの作成やスケールを管理するために推奨される方法(手段)です。
-
kubectl create
コマンドを使用してPodを管理するDeploymentを作成してください。Podは提供されたDockerイメージを元にコンテナを実行します。kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
-
Deploymentを確認します:
kubectl get deployments
出力は下記のようになります:
NAME READY UP-TO-DATE AVAILABLE AGE hello-node 1/1 1 1 1m
-
Podを確認します:
kubectl get pods
出力は下記のようになります:
NAME READY STATUS RESTARTS AGE hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1m
-
クラスターイベントを確認します:
kubectl get events
-
kubectl
で設定を確認します:kubectl config view
kubectl
コマンドの詳細な情報はkubectl overviewを参照してください。
Serviceの作成
通常、PodはKubernetesクラスター内部のIPアドレスからのみアクセスすることができます。hello-node
コンテナをKubernetesの仮想ネットワークの外部からアクセスするためには、KubernetesのServiceとしてPodを公開する必要があります。
-
kubectl expose
コマンドを使用してPodをインターネットに公開します:kubectl expose deployment hello-node --type=LoadBalancer --port=8080
--type=LoadBalancer
フラグはServiceをクラスター外部に公開したいことを示しています。 -
作成したServiceを確認します:
kubectl get services
出力は下記のようになります:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-node LoadBalancer 10.108.144.78 <pending> 8080:30369/TCP 21s kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23m
ロードバランサーをサポートするクラウドプロバイダーでは、Serviceにアクセスするための外部IPアドレスが提供されます。 Minikube では、
LoadBalancer
タイプはminikube service
コマンドを使用した接続可能なServiceを作成します。 -
次のコマンドを実行します:
minikube service hello-node
-
Katacoda環境のみ:ターミナル画面上部の+ボタンをクリックして Select port to view on Host 1 をクリックしてください。
-
Katacoda環境のみ:
8080
の反対側のService出力に、5桁のポート番号が表示されます。このポート番号はランダムに生成されるため、ここで使用するポート番号と異なる場合があります。ポート番号テキストボックスに番号を入力し、ポートの表示をクリックしてください。前の例の場合は、30369
と入力します。アプリケーションとその応答が表示されるブラウザーウィンドウが開きます。
アドオンの有効化
Minikubeはビルトインのアドオンがあり、有効化、無効化、あるいはローカルのKubernetes環境に公開することができます。
-
サポートされているアドオンをリストアップします:
minikube addons list
出力は下記のようになります:
addon-manager: enabled dashboard: enabled default-storageclass: enabled efk: disabled freshpod: disabled gvisor: disabled helm-tiller: disabled ingress: disabled ingress-dns: disabled logviewer: disabled metrics-server: disabled nvidia-driver-installer: disabled nvidia-gpu-device-plugin: disabled registry: disabled registry-creds: disabled storage-provisioner: enabled storage-provisioner-gluster: disabled
-
ここでは例として
metrics-server
のアドオンを有効化します:minikube addons enable metrics-server
出力は下記のようになります:
metrics-server was successfully enabled
-
作成されたPodとサービスを確認します:
kubectl get pod,svc -n kube-system
出力:
NAME READY STATUS RESTARTS AGE pod/coredns-5644d7b6d9-mh9ll 1/1 Running 0 34m pod/coredns-5644d7b6d9-pqd2t 1/1 Running 0 34m pod/metrics-server-67fb648c5 1/1 Running 0 26s pod/etcd-minikube 1/1 Running 0 34m pod/influxdb-grafana-b29w8 2/2 Running 0 26s pod/kube-addon-manager-minikube 1/1 Running 0 34m pod/kube-apiserver-minikube 1/1 Running 0 34m pod/kube-controller-manager-minikube 1/1 Running 0 34m pod/kube-proxy-rnlps 1/1 Running 0 34m pod/kube-scheduler-minikube 1/1 Running 0 34m pod/storage-provisioner 1/1 Running 0 34m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/metrics-server ClusterIP 10.96.241.45 <none> 80/TCP 26s service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 34m service/monitoring-grafana NodePort 10.99.24.54 <none> 80:30002/TCP 26s service/monitoring-influxdb ClusterIP 10.111.169.94 <none> 8083/TCP,8086/TCP 26s
-
metrics-server
を無効化します:minikube addons disable metrics-server
出力は下記のようになります:
metrics-server was successfully disabled
クリーンアップ
クラスターに作成したリソースをクリーンアップします:
kubectl delete service hello-node
kubectl delete deployment hello-node
(オプション)Minikubeの仮想マシン(VM)を停止します:
minikube stop
(オプション)MinikubeのVMを削除します:
minikube delete
次の項目
- Deploymentオブジェクトについて学ぶ.
- アプリケーションのデプロイについて学ぶ.
- Serviceオブジェクトについて学ぶ.