Shutdown of interactive tutorials
The interactive tutorials previously on this website have been shut down.
Kubernetes is grateful to O'Reilly and Katacoda for many years of helping people take their first steps in learning Kubernetes.
The shutdown followed O'Reilly Media's 2019 acquisition of Katacoda.
The tutorials ceased to function after the 31st of March, 2023. You are seeing this notice because this particular page has not yet been updated following that shutdown.
Hello Minikube
このチュートリアルでは、minikubeとKatacodaを使用して、Kubernetes上でサンプルアプリケーションを動かす方法を紹介します。Katacodaはブラウザで無償のKubernetes環境を提供します。
備考:
minikubeをローカルにインストールしている場合もこのチュートリアルを進めることが可能です。目標
- minikubeへのサンプルアプリケーションのデプロイ
- アプリケーションの実行
- アプリケーションログの確認
始める前に
このチュートリアルはNGINXを利用してすべての要求をエコーバックするコンテナイメージを提供します。
minikubeクラスターの作成
Launch Terminal をクリックしてください
備考:
minikubeをローカルにインストール済みの場合は、`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イメージを元にコンテナを実行します。# Webサーバーを含むテストコンテナイメージを実行する kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39 -- /agnhost netexec --http-port=8080
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
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オブジェクトについて学ぶ.