このチュートリアルでは、MinikubeとKatacodaを使用して、Kubernetes上でシンプルなHello WorldのNode.jsアプリケーションを動かす方法を紹介します。Katacodaはブラウザで無償のKubernetes環境を提供します。
備考: Minikubeをローカルにインストールしている場合もこのチュートリアルを進めることが可能です。
このチュートリアルは下記のファイルからビルドされるコンテナーイメージを提供します:
minikube/server.js
|
---|
|
minikube/Dockerfile
|
---|
|
docker build
コマンドについての詳細な情報は、Dockerのドキュメントを参照してください。
Launch Terminal をクリックしてください
備考: Minikubeをローカルにインストール済みの場合は、minikube start
を実行してください。
ブラウザーでKubernetesダッシュボードを開いてください:
minikube dashboard
Katacoda環境のみ:ターミナルペーン上部の+ボタンをクリックしてから Select port to view on Host 1 をクリックしてください。
Katacoda環境のみ:30000
を入力し、Display Portをクリックしてください。
KubernetesのPod は、コンテナの管理やネットワーキングの目的でまとめられた、1つ以上のコンテナのグループです。このチュートリアルのPodがもつコンテナは1つのみです。Kubernetesの Deployment はPodの状態を確認し、Podのコンテナが停止した場合には再起動します。DeploymentはPodの作成やスケールを管理するために推奨される方法(手段)です。
kubectl create
コマンドを使用してPodを管理するDeploymentを作成してください。Podは提供されたDockerイメージを元にコンテナを実行します。
kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node
Deploymentを確認します:
kubectl get deployments
出力:
NAME DESIRED CURRENT 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を参照してください。
通常、PodはKubernetesクラスタ内部のIPアドレスからのみアクセスすることができます。hello-node
コンテナをKubernetesの仮想ネットワークの外部からアクセスするためには、KubernetesのServiceとしてポッドを公開する必要があります。
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環境のみ:30369
(Service出力に表示されている8080
の反対側のポートを参照)を入力し、クリックしてください。
“Hello World”メッセージが表示されるアプリケーションのブラウザウィンドウが開きます。
Minikubeはビルトインのアドオンがあり、有効化、無効化、あるいはローカルのKubernetes環境に公開することができます。
サポートされているアドオンをリストアップします:
minikube addons list
出力:
addon-manager: enabled
coredns: disabled
dashboard: enabled
default-storageclass: enabled
efk: disabled
freshpod: disabled
heapster: disabled
ingress: disabled
kube-dns: enabled
metrics-server: disabled
nvidia-driver-installer: disabled
nvidia-gpu-device-plugin: disabled
registry: disabled
registry-creds: disabled
storage-provisioner: enabled
ここでは例としてheapster
のアドオンを有効化します:
minikube addons enable heapster
出力:
heapster was successfully enabled
作成されたポッドとサービスを確認します:
kubectl get pod,svc -n kube-system
出力:
NAME READY STATUS RESTARTS AGE
pod/heapster-9jttx 1/1 Running 0 26s
pod/influxdb-grafana-b29w8 2/2 Running 0 26s
pod/kube-addon-manager-minikube 1/1 Running 0 34m
pod/kube-dns-6dcb57bcc8-gv7mw 3/3 Running 0 34m
pod/kubernetes-dashboard-5498ccf677-cgspw 1/1 Running 0 34m
pod/storage-provisioner 1/1 Running 0 34m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/heapster ClusterIP 10.96.241.45 <none> 80/TCP 26s
service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 34m
service/kubernetes-dashboard NodePort 10.109.29.1 <none> 80:30000/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
heapster
を無効化します:
minikube addons disable heapster
出力:
heapster was successfully disabled
クラスタに作成したリソースをクリーンアップします:
kubectl delete service hello-node
kubectl delete deployment hello-node
(オプション)Minikubeの仮想マシン(VM)を停止します:
minikube stop
(オプション)MinikubeのVMを削除します:
minikube delete
このページは役に立ちましたか?
Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on Stack Overflow. Open an issue in the GitHub repo if you want to report a problem or suggest an improvement.