Black lives matter.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
このチュートリアルでは、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=k8s.gcr.io/echoserver:1.4
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