--- title: Hello Minikube content_type: tutorial weight: 5 menu: main: title: "Get Started" weight: 10 post: >

手を動かす準備はできていますか?本チュートリアルでは、サンプルアプリケーションを実行するKubernetesクラスターをビルドします。

card: name: tutorials weight: 10 --- このチュートリアルでは、[Minikube](/ja/docs/setup/learning-environment/minikube)とKatacodaを使用して、Kubernetes上でサンプルアプリケーションを動かす方法を紹介します。Katacodaはブラウザで無償のKubernetes環境を提供します。 {{< note >}} [Minikubeをローカルにインストール](https://minikube.sigs.k8s.io/docs/start/)している場合もこのチュートリアルを進めることが可能です。 {{< /note >}} ## {{% heading "objectives" %}} * Minikubeへのサンプルアプリケーションのデプロイ * アプリケーションの実行 * アプリケーションログの確認 ## {{% heading "prerequisites" %}} このチュートリアルはNGINXを利用してすべての要求をエコーバックするコンテナイメージを提供します。 ## Minikubeクラスターの作成 1. **Launch Terminal** をクリックしてください {{< kat-button >}} {{< note >}} Minikubeをローカルにインストール済みの場合は、`minikube start`を実行してください。 {{< /note >}} 2. ブラウザーでKubernetesダッシュボードを開いてください: ```shell minikube dashboard ``` 3. Katacoda環境のみ:ターミナルペーン上部の+ボタンをクリックしてから **Select port to view on Host 1** をクリックしてください。 4. Katacoda環境のみ:`30000`を入力し、**Display Port**をクリックしてください。 ## Deploymentの作成 Kubernetesの[*Pod*](/ja/docs/concepts/workloads/pods/) は、コンテナの管理やネットワーキングの目的でまとめられた、1つ以上のコンテナのグループです。このチュートリアルのPodがもつコンテナは1つのみです。Kubernetesの [*Deployment*](/ja/docs/concepts/workloads/controllers/deployment/) はPodの状態を確認し、Podのコンテナが停止した場合には再起動します。DeploymentはPodの作成やスケールを管理するために推奨される方法(手段)です。 1. `kubectl create` コマンドを使用してPodを管理するDeploymentを作成してください。Podは提供されたDockerイメージを元にコンテナを実行します。 ```shell kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4 ``` 2. Deploymentを確認します: ```shell kubectl get deployments ``` 出力は下記のようになります: ``` NAME READY UP-TO-DATE AVAILABLE AGE hello-node 1/1 1 1 1m ``` 3. Podを確認します: ```shell kubectl get pods ``` 出力は下記のようになります: ``` NAME READY STATUS RESTARTS AGE hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1m ``` 4. クラスターイベントを確認します: ```shell kubectl get events ``` 5. `kubectl` で設定を確認します: ```shell kubectl config view ``` {{< note >}} `kubectl`コマンドの詳細な情報は[kubectl overview](/ja/docs/reference/kubectl/overview/)を参照してください。 {{< /note >}} ## Serviceの作成 通常、PodはKubernetesクラスター内部のIPアドレスからのみアクセスすることができます。`hello-node`コンテナをKubernetesの仮想ネットワークの外部からアクセスするためには、Kubernetesの[*Service*](/ja/docs/concepts/services-networking/service/)としてPodを公開する必要があります。 1. `kubectl expose` コマンドを使用してPodをインターネットに公開します: ```shell kubectl expose deployment hello-node --type=LoadBalancer --port=8080 ``` `--type=LoadBalancer`フラグはServiceをクラスター外部に公開したいことを示しています。 2. 作成したServiceを確認します: ```shell kubectl get services ``` 出力は下記のようになります: ``` NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-node LoadBalancer 10.108.144.78 8080:30369/TCP 21s kubernetes ClusterIP 10.96.0.1 443/TCP 23m ``` ロードバランサーをサポートするクラウドプロバイダーでは、Serviceにアクセスするための外部IPアドレスが提供されます。 Minikube では、`LoadBalancer`タイプは`minikube service`コマンドを使用した接続可能なServiceを作成します。 3. 次のコマンドを実行します: ```shell minikube service hello-node ``` 4. Katacoda環境のみ:ターミナル画面上部の+ボタンをクリックして **Select port to view on Host 1** をクリックしてください。 5. Katacoda環境のみ:`8080`の反対側のService出力に、5桁のポート番号が表示されます。このポート番号はランダムに生成されるため、ここで使用するポート番号と異なる場合があります。ポート番号テキストボックスに番号を入力し、ポートの表示をクリックしてください。前の例の場合は、`30369`と入力します。 アプリケーションとその応答が表示されるブラウザーウィンドウが開きます。 ## アドオンの有効化 Minikubeはビルトインの{{< glossary_tooltip text="アドオン" term_id="addons" >}}があり、有効化、無効化、あるいはローカルのKubernetes環境に公開することができます。 1. サポートされているアドオンをリストアップします: ```shell 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 ``` 2. ここでは例として`metrics-server`のアドオンを有効化します: ```shell minikube addons enable metrics-server ``` 出力は下記のようになります: ``` metrics-server was successfully enabled ``` 3. 作成されたPodとサービスを確認します: ```shell 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 80/TCP 26s service/kube-dns ClusterIP 10.96.0.10 53/UDP,53/TCP 34m service/monitoring-grafana NodePort 10.99.24.54 80:30002/TCP 26s service/monitoring-influxdb ClusterIP 10.111.169.94 8083/TCP,8086/TCP 26s ``` 4. `metrics-server`を無効化します: ```shell minikube addons disable metrics-server ``` 出力は下記のようになります: ``` metrics-server was successfully disabled ``` ## クリーンアップ クラスターに作成したリソースをクリーンアップします: ```shell kubectl delete service hello-node kubectl delete deployment hello-node ``` (オプション)Minikubeの仮想マシン(VM)を停止します: ```shell minikube stop ``` (オプション)MinikubeのVMを削除します: ```shell minikube delete ``` ## {{% heading "whatsnext" %}} * [Deploymentオブジェクト](/ja/docs/concepts/workloads/controllers/deployment/)について学ぶ. * [アプリケーションのデプロイ](/ja/docs/tasks/run-application/run-stateless-application-deployment/)について学ぶ. * [Serviceオブジェクト](/ja/docs/concepts/services-networking/service/)について学ぶ.