アプリのデプロイ
https://kubernetes.io/ja/docs/tutorials/kubernetes-basics/deploy-app/
アプリの配置
gcr.io/google-samples/kubernetes-bootcamp からイメージを取得してきて配置する。以下が実際の公開コンテナレジストリになる。
https://console.cloud.google.com/gcr/images/google-samples/GLOBAL/kubernetes-bootcamp
kubectl run kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1 --port=8080
ちなみに現時点で上記コマンドは非推奨になっていて通常はdeloyment.ymlを使用する。
デプロイメントの確認
kubectl get deployments
MacBook-Pro:xxxx xxxx$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
hello-nodejs-deployment 3 3 3 0 63d
kubernetes-bootcamp 1 1 1 1 3m
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
hello-nodejs-deployment 3 3 3 0 63d
kubernetes-bootcamp 1 1 1 1 3m
kubernetes-bootcamp が表示されていたら成功。
デプロイしたアプリ情報の確認
内部的には稼働しているがまだアプリそのものを参照することはできない。
プロキシを作成することで内部にアクセスできるようになる。
プロキシ起動
kubectl proxy
http://127.0.0.1:8001/ にアクセスするとAPIが一覧で確認できる。
例えば http://127.0.0.1:8001/version にアクセスするとバージョン情報が取得できる。
あるいはcurl コマンドでもいい。
curl http://127.0.0.1:8001/healthz/ping
Pod名を取得する
MacBook-Pro:xxxx xxxx$ kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-nodejs-deployment-645fb786c5-4fch2 0/1 ImagePullBackOff 0 63d
hello-nodejs-deployment-645fb786c5-79f49 0/1 ImagePullBackOff 0 63d
hello-nodejs-deployment-645fb786c5-znmz6 0/1 ImagePullBackOff 0 63d
kubernetes-bootcamp-5c69669756-zg8z6 1/1 Running 0 20m
NAME READY STATUS RESTARTS AGE
hello-nodejs-deployment-645fb786c5-4fch2 0/1 ImagePullBackOff 0 63d
hello-nodejs-deployment-645fb786c5-79f49 0/1 ImagePullBackOff 0 63d
hello-nodejs-deployment-645fb786c5-znmz6 0/1 ImagePullBackOff 0 63d
kubernetes-bootcamp-5c69669756-zg8z6 1/1 Running 0 20m
kubernetes-bootcamp-5c69669756-zg8z6
がPod名になる。
proxy経由でアプリにアクセス
curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/proxy/
MacBook-Pro:xxxx xxxx$ curl http://localhost:8001/api/v1/namespaces/default/pods/kubernetes-bootcamp-5c69669756-zg8z6/proxy/
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-5c69669756-zg8z6 | v=1
MacBook-Pro:xxxx xxxx$ curl http://localhost:8001/api/v1/namespaces/default/pods/kubernetes-bootcamp-5c69669756-zg8z6/proxy/
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-5c69669756-zg8z6 | v=1
Hello Kubernetes bootcamp! | Running on: ポッド名 | v=1
を表示するアプリケーションのようだ。
試しにPod名をわざと間違えてみる。
MacBook-Pro:xxxx xxxx$ curl http://localhost:8001/api/v1/namespaces/default/pods/kubernetes-bootcamp-5c69669756-zg86/proxy/
{ "kind": "Status", "apiVersion": "v1", "metadata": { }, "status": "Failure", "message": "pods \"kubernetes-bootcamp-5c69669756-zg86\" not found", "reason": "NotFound", "details": { "name": "kubernetes-bootcamp-5c69669756-zg86", "kind": "pods" }, "code": 404
実際にWebアプリとして公開する場合はサービスとして公開する。
次回はここまでで出てきたk8s固有の概念、用語について説明する。