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