こんにちは。KOUKIです。k8s学習中のWebエンジニアです。
KubernetesでMicroservicesのデプロイ方法を学びましょう。
本記事では、たくさんのアプリケーションをデプロイします。
尚、今回もMinikubeを使いますので、以下の記事でインストール&起動してください。
※ MacおよびChromeで検証します。
<目次>
参考
Udemyの「Kubernetes Hands-On – Deploy Microservices to the AWS Cloud」コースを参考にしています。
解釈は私が勝手に付けているので、本物をみたい場合は受講してみてください。
API OVERVIEWも参考になります。
今回は、たくさんのサービスをデプロイします。
GitHub: https://github.com/DickChesterwood/k8s-fleetman
- richardchesterwood/k8s-fleetman-webapp-angular
- richardchesterwood/k8s-fleetman-api-gateway
- richardchesterwood/k8s-fleetman-queue
- richardchesterwood/k8s-fleetman-position-simulator
- richardchesterwood/k8s-fleetman-position-tracker
講義によると、以下のような構成になります。

前回
現在の状況は、以下のようになってます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$ kubectl get all NAME READY STATUS RESTARTS AGE pod/mysql 1/1 Running 0 16m pod/queue 1/1 Running 5 3d23h pod/webapp-5b7867fdd5-bxxzx 1/1 Running 2 47h pod/webapp-5b7867fdd5-nr42p 1/1 Running 2 47h NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/database ClusterIP 10.109.182.103 <none> 3306/TCP 16m service/fleetman-queues NodePort 10.107.33.216 <none> 8161:30010/TCP 3d23h service/fleetman-webapp NodePort 10.111.31.12 <none> 80:30080/TCP 3d23h service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7d23h NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/webapp 2/2 2 2 47h NAME DESIRED CURRENT READY AGE replicaset.apps/webapp-5b7867fdd5 2 2 2 47h replicaset.apps/webapp-b548ff9c5 0 0 0 47h |
環境構築
これからたくさんのServiceやPodをデプロイしていきます。
クリーンアップ
前回構築したServiceやPodを以下のコマンドで削除します。
1 2 3 4 5 6 7 |
# リソース削除 kubectl delete -f . # 確認 $ kubectl get all NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 9d |
DeploymentにReplicasetを指定していますが、Deployment自体を消せばPodの復活はできないようですね。
また、以下のファイルはもういらないので、削除しておきましょう。
1 2 |
# 削除 rm networking_tests.yml |
また、以前作成したpods.ymのファイル名を以下のように変更します。
1 2 |
# 名称変更 mv pods.yml workloads.yml |
workloadsのデプロイ
workloadsを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# workloads.yml apiVersion: apps/v1 kind: Deployment metadata: name: queue spec: selector: matchLabels: app: queue replicas: 1 template: metadata: labels: app: queue spec: containers: - name: queue image: richardchesterwood/k8s-fleetman-queue:release1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# workloads 作成 kubectl apply -f workloads.yml # 確認 kubectl get all NAME READY STATUS RESTARTS AGE pod/queue-867c7c7658-dbdrx 1/1 Running 0 8s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 10d NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/queue 1/1 1 1 8s NAME DESIRED CURRENT READY AGE replicaset.apps/queue-867c7c7658 1 1 1 8s |
Serviceのデプロイ
Serviceも作成しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# services.yml apiVersion: v1 kind: Service metadata: name: fleetman-webapp spec: selector: app: webapp ports: - name: http port: 80 nodePort: 30080 type: NodePort --- apiVersion: v1 kind: Service metadata: name: fleetman-queue spec: selector: app: queue ports: - name: http port: 8161 nodePort: 30010 - name: endpoint port: 61616 type: NodePort |
fleetman-queues Serviceに、endpoint(port:61616)を追加してます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# Serviceの作成 kubectl apply -f services.yml # 確認 kubectl get all NAME READY STATUS RESTARTS AGE pod/queue-867c7c7658-dbdrx 1/1 Running 0 4m21s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/fleetman-queues NodePort 10.109.122.234 <none> 8161:30010/TCP,61616:32209/TCP 62s service/fleetman-webapp NodePort 10.110.46.74 <none> 80:30080/TCP 2m44s service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 10d NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/queue 1/1 1 1 4m21s NAME DESIRED CURRENT READY AGE replicaset.apps/queue-867c7c7658 1 1 1 4m21s |
Serviceの立ち上げ
下記のコマンドで、Serviceを立ち上げます。
1 2 3 4 5 6 7 8 9 |
$ minikube service fleetman-queues |-----------|-----------------|----------------|-----------------------------| | NAMESPACE | NAME | TARGET PORT | URL | |-----------|-----------------|----------------|-----------------------------| | default | fleetman-queues | http/8161 | http://192.168.99.102:30010 | | | | endpoint/61616 | http://192.168.99.102:32209 | |-----------|-----------------|----------------|-----------------------------| 🎉 Opening service default/fleetman-queues in default browser... 🎉 Opening service default/fleetman-queues in default browser... |
「http://192.168.99.102:30010/」の方では、ActiveMQ画面が確認できます。

「http://192.168.99.102:32209」は無視してください。
position-simulator Serviceの立ち上げとログ調査
次は、position-simulator Serviceを立ち上げたいと思います。
まずは、Deploymentからです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# workloads.yml apiVersion: apps/v1 kind: Deployment metadata: name: queue ... --- apiVersion: apps/v1 kind: Deployment metadata: name: position-simulator spec: selector: matchLabels: app: position-simulator replicas: 1 template: metadata: labels: app: position-simulator spec: containers: - name: position-simulator image: richardchesterwood/k8s-fleetman-position-simulator:release1 env: - name: SPRING_PROFILES_ACTIVE value: production-ihpfiohaposijfpoa |
envに設定しているvalue(production-ihpfiohaposijfpoa)は適当な値です。これから立ち上げるPodをエラーの状態にしたいので、誤りの値を入れています。
以下のコマンドで、applyしましょう。
1 2 |
# apply $ kubectl apply -f workloads.yml |
ログ調査 – 現状の確認
ここで少し、ログ調査について触れておきます。
以下のコマンドで、position-simulator podの様子を確認しましょう。
1 2 3 4 5 |
$ kubectl get all NAME READY STATUS RESTARTS AGE pod/position-simulator-5f7bbd8566-cwmsv 0/1 Error 3 100s <<<<<<<<<<<<<<<<<<<<<<<<< pod/queue-867c7c7658-dbdrx 1/1 Running 1 22h ... |
「position-simulator-5f7bbd8566-cwmsv」のSTATUSがErrorになっています。
ログ調査 – 詳細を確認する
詳細を確認するために、以下のコマンドを実行しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
$ kubectl describe po position-simulator-5f7bbd8566-cwmsv Name: position-simulator-5f7bbd8566-cwmsv Namespace: default Priority: 0 Node: minikube/192.168.99.102 Start Time: Fri, 05 Nov 2021 04:20:10 +0900 Labels: app=position-simulator pod-template-hash=5f7bbd8566 Annotations: <none> Status: Running IP: 172.17.0.6 IPs: IP: 172.17.0.6 Controlled By: ReplicaSet/position-simulator-5f7bbd8566 Containers: webapp: Container ID: docker://a1c3ce0a764c9b6170143a5c95f955b23258aa5b7e454395724c702d8c18bb02 Image: richardchesterwood/k8s-fleetman-position-simulator:release1 Image ID: docker-pullable://richardchesterwood/k8s-fleetman-position-simulator@sha256:58ce4aa156469115a58be0bcfcec84bb7e42dd4552f83dcf5b6381234001108b Port: <none> Host Port: <none> State: Waiting Reason: CrashLoopBackOff Last State: Terminated Reason: Error Exit Code: 1 Started: Fri, 05 Nov 2021 04:22:34 +0900 Finished: Fri, 05 Nov 2021 04:22:37 +0900 Ready: False Restart Count: 4 Environment: SPRING_PROFILES_ACTIVE: production-ihpfiohaposijfpoa Mounts: /var/run/secrets/kubernetes.io/serviceaccount from default-token-2ztjj (ro) Conditions: Type Status Initialized True Ready False ContainersReady False PodScheduled True Volumes: default-token-2ztjj: Type: Secret (a volume populated by a Secret) SecretName: default-token-2ztjj Optional: false QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 2m58s default-scheduler Successfully assigned default/position-simulator-5f7bbd8566-cwmsv to minikube Normal Pulling 2m57s kubelet Pulling image "richardchesterwood/k8s-fleetman-position-simulator:release1" Normal Pulled 2m20s kubelet Successfully pulled image "richardchesterwood/k8s-fleetman-position-simulator:release1" in 37.285287588s Normal Created 35s (x5 over 2m20s) kubelet Created container webapp Normal Pulled 35s (x4 over 2m15s) kubelet Container image "richardchesterwood/k8s-fleetman-position-simulator:release1" already present on machine Normal Started 34s (x5 over 2m19s) kubelet Started container webapp Warning BackOff 19s (x9 over 2m12s) kubelet Back-off restarting failed container |
この最後の「Events」部分に着目して欲しいです。ここで、Podに何が起こったのか、その情報が記述されます。
「Back-off restarting failed container」となっているので、何かしらの問題が発生したようです。
ログ調査 – ログを出力
下記のコマンドで、ログを出力することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# ログの出力 $ kubectl logs position-simulator-5f7bbd8566-cwmsv . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.4.0.RELEASE) 2021-11-04 19:24:00.957 INFO 1 --- [ main] c.v.s.PositionsimulatorApplication : Starting PositionsimulatorApplication v0.0.1-SNAPSHOT on position-simulator-5f7bbd8566-cwmsv with PID 1 (/webapp.jar started by root in /) 2021-11-04 19:24:00.961 INFO 1 --- [ main] c.v.s.PositionsimulatorApplication : The following profiles are active: production-ihpfiohaposijfpoa 2021-11-04 19:24:01.064 INFO 1 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@5f4da5c3: startup date [Thu Nov 04 19:24:01 UTC 2021]; root of context hierarchy 2021-11-04 19:24:02.297 WARN 1 --- [ main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'journeySimulator': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'fleetman.position.queue' in string value "${fleetman.position.queue}" 2021-11-04 19:24:02.304 INFO 1 --- [ main] utoConfigurationReportLoggingInitializer : Error starting ApplicationContext. To display the auto-configuration report enable debug logging (start with --debug) 2021-11-04 19:24:02.318 ERROR 1 --- [ main] o.s.boot.SpringApplication : Application startup failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'journeySimulator': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'fleetman.position.queue' in string value "${fleetman.position.queue}" at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:355) ~[spring-beans-4.3.2.RELEASE.jar!/:4.3.2.RELEASE] at ... |
おお、素晴らしいですね。
このアプリケーションは、JavaのフレームワークであるSpringで動いているようですね。
そして、ログには以下の出力がされています。
「2021-11-04 19:24:00.961 INFO 1 — [ main] c.v.s.PositionsimulatorApplication : The following profiles are active: production-ihpfiohaposijfpoa」
「production-ihpfiohaposijfpoa」は、workloads.ymlのenvに設定した値ですね。この値をSpringアプリケーションが読み込んでいます。
その後、クラッシュを引き起こしていることからこの値に何か問題があるのかと推察できます。
ログ調査 – 解決
workloads.ymlのenvに設定したvalueを変更します。
1 2 3 4 5 6 7 8 9 10 |
--- apiVersion: apps/v1 kind: Deployment metadata: name: position-simulator spec: ... env: - name: SPRING_PROFILES_ACTIVE value: production-microservice |
「production-microservice」が正しい値らしいです。
applyします。
1 2 3 4 5 6 7 8 |
$ kubectl apply -f workloads.yml deployment.apps/queue unchanged deployment.apps/position-simulator configured $ kubectl get all NAME READY STATUS RESTARTS AGE pod/position-simulator-557977db58-8lxbj 1/1 Running 0 26s <<<<<<<<<<<<<<<<<< pod/queue-867c7c7658-dbdrx 1/1 Running 1 22h |
position-simulatorのSTATUSが「Running」になったので、今度はOKですね。
position-tracker Deploymentのデプロイ
続いて、position-trackerをデプロイします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# workloads.yml ... --- apiVersion: apps/v1 kind: Deployment metadata: name: position-tracker spec: selector: matchLabels: app: position-tracker replicas: 1 template: metadata: labels: app: position-tracker spec: containers: - name: position-tracker image: richardchesterwood/k8s-fleetman-position-tracker:release1 env: - name: SPRING_PROFILES_ACTIVE value: production-microservice |
内容はこれまで実装した他のDeploymentとほぼ同じです。記述が重複するので、Helmなどのツールが使われるようですね。
applyしましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
kubectl apply -f workloads.yml $ kubectl get all NAME READY STATUS RESTARTS AGE pod/position-simulator-54c465565f-gmfx8 1/1 Running 3 24h pod/position-tracker-7964b5474f-m665q 1/1 Running 0 81s pod/queue-68799ffccd-9p25m 1/1 Running 3 24h NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/fleetman-queues NodePort 10.109.122.234 <none> 8161:30010/TCP,61616:32209/TCP 47h service/fleetman-webapp NodePort 10.110.46.74 <none> 80:30080/TCP 47h service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 11d NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/position-simulator 1/1 1 1 25h deployment.apps/position-tracker 1/1 1 1 81s deployment.apps/queue 1/1 1 1 47h NAME DESIRED CURRENT READY AGE replicaset.apps/position-simulator-54c465565f 1 1 1 24h replicaset.apps/position-simulator-557977db58 0 0 0 24h replicaset.apps/position-simulator-5f7bbd8566 0 0 0 25h replicaset.apps/position-tracker-7964b5474f 1 1 1 81s replicaset.apps/queue-68799ffccd 1 1 1 24h replicaset.apps/queue-867c7c7658 0 0 0 47h |
一旦、動作確認をしてみましょう。
下記のコマンドで、minikubeのipを確認します。
1 2 |
$ minikube ip 192.168.99.102 |
このIPで、ブラウザから「http://192.168.99.102:30010」にアクセスし、Active MQの画面を表示させます。

続いて、「Manage ActiveMQ broker」を押下し、ユーザー名とパスワードに「admin」を入力してログインします。
すると以下の画面に飛ぶので、「Queues」をクリックします。


OKですね。
position-tracker Serviceのデプロイ
続いて、Serviceをデプロイします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# services.yml ... --- apiVersion: v1 kind: Service metadata: name: fleetman-position-tracker spec: selector: app: position-tracker ports: - name: http port: 8080 nodePort: 30020 type: NodePort |
applyします。
1 2 3 4 5 6 |
apply $ kubectl apply -f services.yml $ minikube ip 192.168.99.102 |
ローカルから「http://192.168.99.102:30020/」にアクセスします。

アプリが反応しなくなりました。。。
minikube環境の再作成
どうやらたくさんのアプリをデプロイする関係で、minikube上のメモリが足りなくなったようです。
そこで、minikubeの環境を作り直します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# minikube停止 minikube stop # minikube削除 minikube delete # 関連フォルダ/ファイルを削除 rm -rf ~/.kube rm -rf ~/.minikube # メモリを4Gに指定して作成 minikube start --memory 4096 --driver=virtualbox # ステータスの確認 minikube status minikube type: Control Plane host: Running kubelet: Running apiserver: Running kubeconfig: Configured # 全てapply kubectl apply -f . $ minikube ip 192.168.99.103 |
ブラウザから「http://192.168.99.103:30020/」にアクセスします。

今後は、OKでした。
エラーが表示されますが、「http://192.168.99.103:30020/vehicles/City%20Truck」のようにパラメータをつけてリクエストを送ると情報が取得できます。

データの取得が確認できました。しか足、position-tracker Serviceは外部(ブラウザ)に公開する必要がないので(アプリ内からの利用)、TypeをClusterIPに変更して外部に公開できないようします。
1 2 3 4 5 6 7 8 9 10 11 12 |
--- apiVersion: v1 kind: Service metadata: name: fleetman-position-tracker spec: selector: app: position-tracker ports: - name: http port: 8080 type: ClusterIP |
1 2 3 4 5 6 7 8 9 |
# apply kubectl apply -f services.yml $ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE fleetman-position-tracker ClusterIP 10.102.113.245 <none> 8080/TCP 18m fleetman-queue NodePort 10.103.48.65 <none> 8161:30010/TCP,61616:32330/TCP 18m fleetman-webapp NodePort 10.110.235.91 <none> 80:30080/TCP 18m kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 20m |
「fleetman-position-tracker」のPORTが「8080/TCP 」のみになりましたので、OKですね。
API Gatewayのデプロイ
続いて、API Gatewayをデプロイしましょう。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# workloads.yml --- apiVersion: apps/v1 kind: Deployment metadata: name: api-gateway spec: selector: matchLabels: app: api-gateway replicas: 1 template: metadata: labels: app: api-gateway spec: containers: - name: api-gateway image: richardchesterwood/k8s-fleetman-api-gateway:release1 env: - name: SPRING_PROFILES_ACTIVE value: production-microservice # services.yml --- apiVersion: v1 kind: Service metadata: name: fleetman-api-gateway spec: selector: app: api-gateway ports: - name: http port: 8080 type: ClusterIP |
もう何度も同じ手順を繰り返してますね^^
applyします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
kubectl apply -f workloads.yml kubectl apply -f services.yml $ kubectl get all NAME READY STATUS RESTARTS AGE pod/api-gateway-85944f447b-9gvqw 1/1 Running 1 12m pod/position-simulator-54c465565f-rfb42 1/1 Running 3 23h pod/position-tracker-7964b5474f-lnhq4 1/1 Running 3 23h pod/queue-68799ffccd-zgszt 1/1 Running 3 23h NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/fleetman-api-gateway NodePort 10.107.219.59 <none> 8080:30020/TCP 12m service/fleetman-position-tracker ClusterIP 10.102.113.245 <none> 8080/TCP 23h service/fleetman-queue NodePort 10.103.48.65 <none> 8161:30010/TCP,61616:32330/TCP 23h service/fleetman-webapp NodePort 10.110.235.91 <none> 80:30080/TCP 23h service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23h NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/api-gateway 1/1 1 1 12m deployment.apps/position-simulator 1/1 1 1 23h deployment.apps/position-tracker 1/1 1 1 23h deployment.apps/queue 1/1 1 1 23h NAME DESIRED CURRENT READY AGE replicaset.apps/api-gateway-85944f447b 1 1 1 12m replicaset.apps/position-simulator-54c465565f 1 1 1 23h replicaset.apps/position-tracker-7964b5474f 1 1 1 23h replicaset.apps/queue-68799ffccd 1 1 1 23h |
ブラウザから「http://192.168.99.103:30020/」にアクセスします。

Api Gatewayのインターフェースっぽいものが出て来ました。
Web Appのデプロイ
最後にWeb Appをデプロイして終わりにしましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# workloads.yml ... --- apiVersion: apps/v1 kind: Deployment metadata: name: webapp spec: selector: matchLabels: app: webapp replicas: 1 template: metadata: labels: app: webapp spec: containers: - name: webapp image: richardchesterwood/k8s-fleetman-webapp-angular:release1 env: - name: SPRING_PROFILES_ACTIVE value: production-microservice |
Web AppのServiceは既に定義済みなので、Deploymentだけapplyします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
kubectl apply -f workloads.yml $ kubectl get all NAME READY STATUS RESTARTS AGE pod/api-gateway-85944f447b-9gvqw 1/1 Running 1 18m pod/position-simulator-54c465565f-rfb42 1/1 Running 3 23h pod/position-tracker-7964b5474f-lnhq4 1/1 Running 3 23h pod/queue-68799ffccd-zgszt 1/1 Running 3 23h pod/webapp-6d4bd8866f-t9bgd 1/1 Running 0 20s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/fleetman-api-gateway NodePort 10.107.219.59 <none> 8080:30020/TCP 17m service/fleetman-position-tracker ClusterIP 10.102.113.245 <none> 8080/TCP 23h service/fleetman-queue NodePort 10.103.48.65 <none> 8161:30010/TCP,61616:32330/TCP 23h service/fleetman-webapp NodePort 10.110.235.91 <none> 80:30080/TCP 23h service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23h NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/api-gateway 1/1 1 1 18m deployment.apps/position-simulator 1/1 1 1 23h deployment.apps/position-tracker 1/1 1 1 23h deployment.apps/queue 1/1 1 1 23h deployment.apps/webapp 1/1 1 1 20s NAME DESIRED CURRENT READY AGE replicaset.apps/api-gateway-85944f447b 1 1 1 18m replicaset.apps/position-simulator-54c465565f 1 1 1 23h replicaset.apps/position-tracker-7964b5474f 1 1 1 23h replicaset.apps/queue-68799ffccd 1 1 1 23h replicaset.apps/webapp-6d4bd8866f 1 1 1 20s |
Web Appが立ち上がったらブラウザから「http://192.168.99.103:30080/」にアクセスしましょう。
OKですね。
長くなりましたが、これで以上です。
次回
次回は、Volumesについて学びましょう。
記事まとめ
コード
services.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# services.yml apiVersion: v1 kind: Service metadata: name: fleetman-webapp spec: selector: app: webapp ports: - name: http port: 80 nodePort: 30080 type: NodePort --- apiVersion: v1 kind: Service metadata: name: fleetman-queue spec: selector: app: queue ports: - name: http port: 8161 nodePort: 30010 - name: endpoint port: 61616 type: NodePort --- apiVersion: v1 kind: Service metadata: name: fleetman-position-tracker spec: selector: app: position-tracker ports: - name: http port: 8080 type: ClusterIP --- apiVersion: v1 kind: Service metadata: name: fleetman-api-gateway spec: selector: app: api-gateway ports: - name: http port: 8080 type: ClusterIP |
workloads.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# workloads.yml apiVersion: apps/v1 kind: Deployment metadata: name: queue spec: selector: matchLabels: app: queue replicas: 1 template: metadata: labels: app: queue spec: containers: - name: queue image: richardchesterwood/k8s-fleetman-queue:release1 --- apiVersion: apps/v1 kind: Deployment metadata: name: position-simulator spec: selector: matchLabels: app: position-simulator replicas: 1 template: metadata: labels: app: position-simulator spec: containers: - name: position-simulator image: richardchesterwood/k8s-fleetman-position-simulator:release1 env: - name: SPRING_PROFILES_ACTIVE value: production-microservice --- apiVersion: apps/v1 kind: Deployment metadata: name: position-tracker spec: selector: matchLabels: app: position-tracker replicas: 1 template: metadata: labels: app: position-tracker spec: containers: - name: position-tracker image: richardchesterwood/k8s-fleetman-position-tracker:release1 env: - name: SPRING_PROFILES_ACTIVE value: production-microservice --- apiVersion: apps/v1 kind: Deployment metadata: name: api-gateway spec: selector: matchLabels: app: api-gateway replicas: 1 template: metadata: labels: app: api-gateway spec: containers: - name: api-gateway image: richardchesterwood/k8s-fleetman-api-gateway:release1 env: - name: SPRING_PROFILES_ACTIVE value: production-microservice --- apiVersion: apps/v1 kind: Deployment metadata: name: webapp spec: selector: matchLabels: app: webapp replicas: 1 template: metadata: labels: app: webapp spec: containers: - name: webapp image: richardchesterwood/k8s-fleetman-webapp-angular:release1 env: - name: SPRING_PROFILES_ACTIVE value: production-microservice |
コメントを残す
コメントを投稿するにはログインしてください。