Upgrade to Pro — share decks privately, control downloads, hide ads and more …

knative-serving

 knative-serving

2021/03/09 Kubernetes Novice Tokyo #9
KnativeでKubernetesをラクにする

セッション動画
https://www.youtube.com/watch?v=BbPCcrSQPEQ&t=2956s

mochizuki875

March 01, 2021
Tweet

More Decks by mochizuki875

Other Decks in Technology

Transcript

  1. ˗ଟ͘ͷ,VCFSOFUFTͷϦιʔεʹର͢Δཧղ΍Ϧιʔεؒͷؔ࿈෇͚͕ඞཁ ɹˠֶशίετɺ:".-هࡌྔ૿Ճ ˗ΞϓϦͷόʔδϣϯΛ੾Γସ͑ΔࡍͷτϥϑΟοΫ੍ޚ ɹˠ੾Γସ͑ํ๏Λج൫ར༻ऀͰ޻෉ ˞֎෦͔ΒͷΞΫηεΤϯυϙΠϯτ͸*OHSFTTΤϯυϙΠϯτʢ֎෦-#΍֎෦ެ։͞Εͨ*OHSFTT$POUSPMMFS౳ʣ apiVersion: apps/v1 kind: Deployment metadata:

    labels: app: spring-boot-web name: spring-boot-web spec: replicas: 3 selector: matchLabels: app: spring-boot-web template: metadata: labels: app: spring-boot-web spec: containers: - image: keitamochizuki/spring-boot-web name: spring-boot-web env: - name: APP_VERSION value: v1 resources: requests: cpu: "250m" apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: spring-boot-web-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: spring-boot-web minReplicas: 3 maxReplicas: 5 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50 EFQMPZNFOUZNM IQBZNM ,VCFSOFUFTͰΞϓϦΛσϓϩΠެ։͢Δέʔε
  2. ˗ଟ͘ͷ,VCFSOFUFTͷϦιʔεʹର͢Δཧղ΍Ϧιʔεؒͷؔ࿈෇͚͕ඞཁ ɹˠֶशίετɺ:".-هࡌྔ૿Ճ ˗ΞϓϦͷόʔδϣϯΛ੾Γସ͑ΔࡍͷτϥϑΟοΫ੍ޚ ɹˠ੾Γସ͑ํ๏Λج൫ར༻ऀͰ޻෉ ˞֎෦͔ΒͷΞΫηεΤϯυϙΠϯτ͸*OHSFTTΤϯυϙΠϯτʢ֎෦-#΍֎෦ެ։͞Εͨ*OHSFTT$POUSPMMFS౳ʣ apiVersion: networking.k8s.io/v1 kind: Ingress metadata:

    name: spring-boot-web annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - host: "spring-boot-web.example.com" http: paths: - path: "/" pathType: Prefix backend: service: name: spring-boot-web port: number: 8080 JOHSFTTZNM apiVersion: v1 kind: Service metadata: name: spring-boot-web spec: selector: app: spring-boot-web ports: - protocol: TCP port: 8080 targetPort: 8080 TFSWJDFZNM ,VCFSOFUFTͰΞϓϦΛσϓϩΠެ։͢Δέʔε
  3. ,OBUJWF4FSWJOHͰΞϓϦΛσϓϩΠެ։͢Δέʔε ˞֎෦͔ΒͷΞΫηεΤϯυϙΠϯτ͸֎෦ެ։͞Εͨ*OHSFTT(BUFXBZ TFSWJDFTQSJOHZNM apiVersion: serving.knative.dev/v1 kind: Service metadata: name: spring-boot-web

    spec: template: spec: containers: - image: keitamochizuki/spring-boot-web env: - name: APP_VERSION value: "v1" ˗࠷΋γϯϓϧʹσϓϩΠެ։͢Δ৔߹͸4FSWJDFϦιʔεͷఆٛͷΈͰྑ͍
  4. ❯❯❯ kubectl apply -f service-spring.yml service.serving.knative.dev/spring-boot-web created ❯❯❯ kubectl get

    all NAME READY STATUS RESTARTS AGE pod/spring-boot-web-00001-deployment-7ccd57c85d-vjm84 2/2 Running 0 25s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 19d service/spring-boot-web ExternalName <none> knative-local-gateway.istio-system.svc.cluster.local 80/TCP 10s service/spring-boot-web-00001 ClusterIP 10.99.90.143 <none> 80/TCP 26s service/spring-boot-web-00001-private ClusterIP 10.110.150.217 <none> 80/TCP,9090/TCP,9091/TCP,8022/TCP 26s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/spring-boot-web-00001-deployment 1/1 1 1 26s NAME DESIRED CURRENT READY AGE replicaset.apps/spring-boot-web-00001-deployment-7ccd57c85d 1 1 1 25s NAME URL LATESTCREATED LATESTREADY READY REASON service.serving.knative.dev/spring-boot-web http://spring-boot-web.default.example.com spring-boot-web-00001 spring-boot-web-00001 True NAME LATESTCREATED LATESTREADY READY REASON configuration.serving.knative.dev/spring-boot-web spring-boot-web-00001 spring-boot-web-00001 True NAME CONFIG NAME K8S SERVICE NAME GENERATION READY REASON revision.serving.knative.dev/spring-boot-web-00001 spring-boot-web spring-boot-web-00001 1 True NAME URL READY REASON route.serving.knative.dev/spring-boot-web http://spring-boot-web.default.example.com True 4FSWJDFϦιʔεͷ࡞੒ͱ֬ೝ Ϧιʔεͷ࡞੒ 4FSWJDFϦιʔεΛ࡞੒͢ΔͱҎԼͷ༷ʹ,OBUJWFͷ$3%͓ΑͼͦΕʹ෇ਵͯ͠,VCFSOFUFTϦιʔε͕ ࡞੒͞ΕΔɻ˞͜͜Ͱ4FSWJDFͱ͸,VCFSOFUFTͷ΋ͷͰͳ͘,OBUJWFͷ$3%Λࢦ͠·͢ ❯❯❯ kn service list NAME URL LATEST AGE CONDITIONS READY REASON spring-boot-web http://spring-boot-web.default.example.com spring-boot-web-00001 8m54s 3 OK / 3 True ~/w/k/k/s/s/service ❯❯❯ kn route list NAME URL READY spring-boot-web http://spring-boot-web.default.example.com True ~/w/k/k/s/s/service ❯❯❯ kn revision list NAME SERVICE TRAFFIC TAGS GENERATION AGE CONDITIONS READY REASON spring-boot-web-00001 spring-boot-web 100% 1 9m29s 3 OK / 4 True ҎԼͷ༷ʹ,OBUJWF$-*Λ࢖ͬͨ֬ೝ΋ՄೳͰ͢ɻ ,OBUJWF4FSWJOHͰΞϓϦΛσϓϩΠެ։͢Δέʔε
  5. ֎෦͔ΒͷΞΫηε֬ೝ४උ ˗ΞΫηεΤϯυϙΠϯτͷऔಘ ɹ,OBUJWFͰσϓϩΠͨ͠ΞϓϦʹ֎෦͔ΒΞΫηε͢ΔࡍͷΤϯυϙΠϯτ͸,OBUJWFΠϯετʔϧ࣌ʹ ɹ࡞੒͢Δ*TUJP(BUFXBZͱͳΓ·͢ɻ ɹ*TUJP(BUFXBZ͸5ZQF-PBE#BMBODFSͰ֎෦ެ։͞Ε·͕͢ࠓճ͸ϩʔΧϧͰͷݕূͱͳΔͨΊ/PEF1PSU ɹͰ୅༻͠·͢ɻ ❯❯❯ kubectl get svc

    -n istio-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE cluster-local-gateway ClusterIP 10.105.184.8 <none> 15020/TCP,80/TCP,443/TCP 18d istio-ingressgateway LoadBalancer 10.100.235.103 <pending> 15021:32326/TCP,80:30134/TCP,443:31454/TCP,15012:31018/TCP,15443:30837/TCP 18d ˗໊લղܾ ɹ,OBUJWFσϑΥϧτͰ͸ΞϓϦ΁ͷΞΫηε63-͕ ɹɹIUUQTFSWJDFOBNFTQBDFFYBNQMFDPN ɹͱ͍͏໋໊نଇͰࣗಈൃߦ͞Ε·͢ɻ˞มߋՄೳ ɹຊདྷ͸ ɹɹ FYBNQMFDPN"JTUJPJOHSFTTHBUFXBZ&YUFSOBM*1/PEF*1 ɹͷܗͰ%/4ొ࿥͓ͯ͘͠΂͖ͳͷͰ͕͢ɺ ɹࠓճͷݕূͰ͸͋Β͔͡Ί෷͍ग़͞ΕΔ63-޲͚ϨίʔυΛFUTIPTUTʹ௚઀هࡌ͍ͯ͠·͢ɻ ❯❯❯ cat /etc/hosts 192.168.2.154 spring-boot-web.default.example.com 192.168.2.154 spring-boot-web.default.example.com 192.168.2.154 spring-boot-web-stg.default.staging.org 192.168.2.154 v1-spring-boot-web.default.example.com 192.168.2.154 v2-spring-boot-web.default.example.com ,OBUJWF4FSWJOHͰΞϓϦΛσϓϩΠެ։͢Δέʔε
  6. ઌͷྫͰ͸4FSWJDFϦιʔεͱͯ͠3PVUF $PO fi HVSBUJPOϦιʔεΛ·ͱΊͯѻ͍ͬͯ·͕ͨ͠ɺ ҎԼͷΑ͏ʹͦΕͧΕ෼͚ͯѻ͏͜ͱ΋ՄೳͰ͢ɻ σϞͰ͸ͦΕͧΕΛ෼͚ͯѻ͍·͢ɻ apiVersion: serving.knative.dev/v1 kind: Service

    metadata: name: spring-boot-web namespace: default spec: template: metadata: name: spring-boot-web-v1 spec: containers: - image: keitamochizuki/spring-boot-web env: - name: APP_VERSION value: "v1" traffic: - percent: 100 revisionName: spring-boot-web-v1 tag: v1 TFSWJDFTQSJOHZNM apiVersion: serving.knative.dev/v1 kind: Configuration metadata: name: spring-boot-web spec: template: metadata: name: spring-boot-web-v1 # ࡞੒͢Δrevision໊ spec: containers: - image: keitamochizuki/spring-boot-web env: - name: APP_VERSION value: "v1" apiVersion: serving.knative.dev/v1 kind: Route metadata: name: spring-boot-web spec: traffic: - percent: 100 revisionName: spring-boot-web-v1 DPO fi HVSBUJPOTQSJOHZNM SPVUFTQSJOHZNM ˞ઌͷྫͰ͸͔ͳΓলུͨ͠TFSWJDFఆٛͰ͕ͨ͠ ɹਖ਼֬ʹهࡌ͢Δͱ্هͷΑ͏ʹͳΓ·͢ ,OBUJWFϦιʔε
  7. ,OBUJWFσϑΥϧτͰ͸,1"ͱ͍͏࢓૊ΈʹΑΓαʔϏεʢ1PEʣͷΦʔτεέʔϧΛߦ͍·͢ɻ ಛʹσϑΥϧτͰ͸αʔϏεʹରͯ͠ϦΫΤετ͕͋ͬͨࡍʹ1PEΛىಈ͠ɺ ͠͹Β͘ϦΫΤετ͕ͳ͔ͬͨΒࣗಈతʹ1PEΛఀࢭ͢Δʢ୆·ͰεέʔϧΠϯ͢Δʣͱ͍͏ಈ࡞Λ͠·͢ɻ ͜ͷಈ࡞ʹΑΓॳճΞΫηε࣌͸1PEىಈ͕࣌ؒ0)ͱͳΓϨεϙϯεʹएׯͷ஗Ԇ͕ൃੜ͠·͢ɻ ˞ৗ࣌ىಈ͢Δઃఆ΋Մೳ ˞θϩεέʔϧ͢Δ·Ͱͷ࣌ؒࢦఆ΋Մೳ ❯❯❯ kubectl get po

    No resources found in default namespace. ~/w/k/k/s/s/service ❯❯❯ kubectl get po -w NAME READY STATUS RESTARTS AGE spring-boot-web-00001-deployment-7ccd57c85d-rp6gl 0/2 Pending 0 0s spring-boot-web-00001-deployment-7ccd57c85d-rp6gl 0/2 Pending 0 0s spring-boot-web-00001-deployment-7ccd57c85d-rp6gl 0/2 ContainerCreating 0 1s spring-boot-web-00001-deployment-7ccd57c85d-rp6gl 0/2 ContainerCreating 0 2s spring-boot-web-00001-deployment-7ccd57c85d-rp6gl 1/2 Running 0 3s spring-boot-web-00001-deployment-7ccd57c85d-rp6gl 2/2 Running 0 8s spring-boot-web-00001-deployment-7ccd57c85d-rp6gl 2/2 Terminating 0 70s spring-boot-web-00001-deployment-7ccd57c85d-rp6gl 1/2 Terminating 0 97s spring-boot-web-00001-deployment-7ccd57c85d-rp6gl 1/2 Terminating 0 117s spring-boot-web-00001-deployment-7ccd57c85d-rp6gl 0/2 Terminating 0 119s ˡϦΫΤετͳ͠ ˡϦΫΤετൃੜ ˡϦΫΤετͳ͠ঢ়ଶͰҰఆ࣌ؒܦա θϩεέʔϧ ˡϨεϙϯεฦ٫
  8. apiVersion: serving.knative.dev/v1 kind: Configuration metadata: name: spring-boot-web spec: template: metadata:

    annotations: # Φʔτεέʔϧؔ࿈ύϥϝʔλ autoscaling.knative.dev/minScale: "1" # ࠷খεέʔϧ਺(default 0) autoscaling.knative.dev/maxScale: "4" # ࠷େεέʔϧ਺(default 0 unlimited) autoscaling.knative.dev/metric: "rps" # Φʔτεέʔϧͷࢦඪͱ͢ΔϝτϦΫεΛࢦఆ(default concurrency) autoscaling.knative.dev/target: "3" # ΦʔτεέʔϧͷϝτϦΫε஋soft ௒աͯ͠΋ϦΫΤετ͸ड͚෇͚Δ(default 100) name: spring-boot-web-v1 # ࡞੒͢Δrevision໊ spec: containers: - image: keitamochizuki/spring-boot-web env: - name: APP_VERSION value: "v1" DPO fi HVSBUJPOTQSJOHWZNM ࠓճ͸$PO fi HVSBUJPOͷϚχϑΣετ಺ͰΦʔτεέʔϧͷύϥϝʔλΛઃఆ͍ͯ͠·͢ɻ ઃఆ͠ͳͯ͘΋σϓϩΠࣗମ͸ߦ͑·͕͢ɺσϞ޲͚ʹઃఆ͍ͯ͠·͢ɻ ಛʹ࠷খεέʔϧ਺ʢNJO4DBMFʣΛͱ͢Δ͜ͱͰθϩεέʔϧΛߦΘͳ͍༷ʹ͍ͯ͠·͢ɻ ᶃWΞϓϦΛσϓϩΠ͢Δ ❯❯❯ kubectl apply -f configuration-spring-v1.yml configuration.serving.knative.dev/spring-boot-web created ࣮ӡ༻Λ૝ఆͨ͠έʔε
  9. apiVersion: serving.knative.dev/v1 kind: Route metadata: name: spring-boot-web spec: traffic: -

    percent: 100 revisionName: spring-boot-web-v1 SPVUFTQSJOHWZNM 3PVUFϦιʔεͰ͸ᶃͷ$PO fi HVSBUJPOʹΑΓ࡞੒͞Εͨ3FWJTJPOʢTQSJOHCPPUXFCWʣʹ શͯͷτϥϑΟοΫΛసૹ͢Δ༷ʹઃఆΛߦ͍ͬͯ·͢ɻ ࠓճ͸3PVUFʹΑͬͯIUUQSPVUF໊OBNFTQBDFFYBNQMFDPNͱ͍͏63-͕ൃߦ͞ΕΔ༷ʹ ઃఆ͍ͯ͠·͢ɻ˞มߋՄೳ ᶄWΞϓϦΛ֎෦ެ։͢Δ ❯❯❯ kubectl apply -f route-spring-v1.yml route.serving.knative.dev/spring-boot-web created ❯❯❯ kubectl get route NAME URL READY REASON spring-boot-web http://spring-boot-web.default.example.com True 3PVUFϦιʔεͷ࡞੒͕׬ྃ͢ΔͱҎԼͷ༷ʹ63-͕ൃߦ͞Ε·͢ɻ ͜͜ʹ֎෦͔ΒΞΫηε͢ΔͱᶃͰσϓϩΠͨ͠W3FWJTJPOͷΞϓϦʹΞΫηεͰ͖·͢ɻ ࣮ӡ༻Λ૝ఆͨ͠έʔε
  10. ᶅWΞϓϦΛσϓϩΠ͢Δ WͰ༻͍ͨ$PO fi HVSBUJPOϦιʔεͷϚχϑΣετΛʹͯ؀ڥม਺ΛWͱ͍͏஋ʹมߋ͍ͯ͠·͢ɻ ͜ΕΛద༻͢Δ͜ͱͰ$PO fi HVSBUJPO͕ߋ৽͞Εɺ৽ͨʹW3FWJTJPO͕࡞੒͞Ε·͢ɻ apiVersion: serving.knative.dev/v1 kind:

    Configuration metadata: name: spring-boot-web spec: template: metadata: annotations: # Φʔτεέʔϧؔ࿈ύϥϝʔλ autoscaling.knative.dev/minScale: "1" # ࠷খεέʔϧ਺(default 0) autoscaling.knative.dev/maxScale: "4" # ࠷େεέʔϧ਺(default 0 unlimited) autoscaling.knative.dev/metric: "rps" # Φʔτεέʔϧͷࢦඪͱ͢ΔϝτϦΫεΛࢦఆ(default concurrency) autoscaling.knative.dev/target: "3" # ΦʔτεέʔϧͷϝτϦΫε஋soft ௒աͯ͠΋ϦΫΤετ͸ड͚෇͚Δ(default 100) name: spring-boot-web-v2 # ࡞੒͢Δrevision໊ spec: containers: - image: keitamochizuki/spring-boot-web env: - name: APP_VERSION value: "v2" DPO fi HVSBUJPOTQSJOHWZNM ❯❯❯ kubectl apply -f configuration-spring-v2.yml configuration.serving.knative.dev/spring-boot-web configured ࣮ӡ༻Λ૝ఆͨ͠έʔε
  11. ᶆWΞϓϦ֬ೝ༻63-Λൃߦͯ͠ಈ࡞֬ೝ͢Δ apiVersion: serving.knative.dev/v1 kind: Route metadata: name: spring-boot-web-stg labels: #

    ϥϕϧͰ͜ͷrouteʹׂΓ౰ͯΔυϝΠϯΛࢦఆ domain: stg spec: traffic: - percent: 100 revisionName: spring-boot-web-v2 SPVUFTQSJOHTUHWZNM WΛ֬ೝ༻63-Ͱ֎෦ެ։͢ΔͨΊʹެ։༻ͱ͸ผʹ֬ೝ༻3PVUFϦιʔεΛ࡞੒͠·͢ɻ ࠓճ͸,OBUJWFͷઃఆͰϥϕϧʢNFUBEBUBMBCFMTEPNBJOTUHʣΛࢦఆ͢Δͱ4UBHJOH༻υϝΠϯ͕ 63-ʹׂΓ౰ͯΒΕΔΑ͏ʹͯ͋͠Γ·͢ɻʢ࣍ϖʔδࢀরʣ ❯❯❯ kubectl apply -f route-spring-v2-stg.yml route.serving.knative.dev/spring-boot-web-stg created ❯❯❯ kubectl get route NAME URL READY REASON spring-boot-web http://spring-boot-web.default.example.com True spring-boot-web-stg http://spring-boot-web-stg.default.staging.org True ҎԼͷ༷ʹ৽نͰ3PVUFϦιʔε͕࡞੒͞ΕɺTUBHJOHPSHυϝΠϯͷ63-͕ൃߦ͞Ε·͢ɻ ͜͜ʹ֎෦͔ΒΞΫηε͢ΔͱᶅͰσϓϩΠͨ͠W3FWJTJPOͷΞϓϦʹΞΫηεͰ͖·͢ɻ ࣮ӡ༻Λ૝ఆͨ͠έʔε
  12. ɹσϑΥϧτͰ͸SPVUFͰൃߦ͞ΕΔ63-ʹFYBNQMFDPNͱ͍͏υϝΠϯׂ͕Γ౰ͯΒΕΔΑ͏ʹ ɹͳ͍ͬͯ·͢ɻ ɹDPO fi HEPNBJOͱ͍͏$PO fi H.BQΛॻ͖׵͑Δ͜ͱͰ͜ͷυϝΠϯΛมߋͨ͠Γɺ ɹ3PVUFʹ෇༩ͨ͠λάʹԠͯ͡೚ҙͷυϝΠϯΛ༻͍Δ͜ͱ͕Ͱ͖·͢ɻ apiVersion: v1

    kind: ConfigMap metadata: name: config-domain namespace: knative-serving data: # σϑΥϧτͰ෇༩͢ΔυϝΠϯ example.com: "" # domain=devͷϥϕϧΛ࣋ͭrouteʹ෇༩͢ΔυϝΠϯ development.org: | selector: domain: dev # domain=stgͷϥϕϧΛ࣋ͭrouteʹ෇༩͢ΔυϝΠϯ staging.org: | selector: domain: stg DPO fi HEPNBJOZNM ❯❯❯ kubectl apply -f config-domain.yml ࣮ӡ༻Λ૝ఆͨ͠έʔε ʢࢀߟʣ3PVUFυϝΠϯͷઃఆ
  13. ᶇҰ෦ͷτϥϑΟοΫΛWʹ੾Γସ͑Δ apiVersion: serving.knative.dev/v1 kind: Route metadata: name: spring-boot-web spec: traffic:

    - percent: 70 revisionName: spring-boot-web-v1 tag: v1 - percent: 30 revisionName: spring-boot-web-v2 tag: v2 SPVUFTQSJOHWWZNM ެ։༻3PVUFϦιʔεΛߋ৽͠·͢ɻʢᶄͰ࡞੒ͨ͠΋ͷʣ ݱঢ়͸W3FWJTJPOʹͷτϥϑΟοΫΛసૹ͢Δઃఆʹͳ͍ͬͯ·͕͢ɺ ҎԼͷઃఆΛద༻͢Δ͜ͱͰWͱWͷ3FWJTJPOʹͦΕͧΕ͓ΑͼͷτϥϑΟοΫΛ సૹ͢Δ༷ʹͳΓ·͢ɻ ❯❯❯ kubectl apply -f route-spring-v1v2.yml route.serving.knative.dev/spring-boot-web configured 3PVUFϦιʔεͷߋ৽ޙʹެ։༻63-ʹ֎෦͔ΒΞΫηε͢ΔͱɺWͱW͕֬཰తʹ੾ΓସΘͬͯ දࣔ͞ΕΔ͜ͱ͕෼͔Γ·͢ɻ ࣮ӡ༻Λ૝ఆͨ͠έʔε
  14. ᶈશͯͷτϥϑΟοΫΛWʹ੾Γସ͑Δ ެ։༻3PVUFϦιʔεΛߋ৽͠·͢ɻ ҎԼͷઃఆΛద༻͢Δ͜ͱͰશͯͷτϥϑΟοΫ͕Wͷ3FWJTJPOʹసૹ͞ΕΔ༷ʹͳΓ·͢ɻ apiVersion: serving.knative.dev/v1 kind: Route metadata: name: spring-boot-web

    spec: traffic: - percent: 100 revisionName: spring-boot-web-v2 SPVUFTQSJOHWZNM ❯❯❯ kubectl apply -f route-spring-v2.yml route.serving.knative.dev/spring-boot-web configured 3PVUFϦιʔεͷߋ৽ޙʹެ։༻63-ʹ֎෦͔ΒΞΫηε͢ΔͱɺWͷը໘ͷΈ͕දࣔ͞ΕΔ༷ʹ ͳͬͨ͜ͱ͕෼͔Γ·͢ɻ ·ͨສҰW3FWJTJPOͷΞϓϦʹෆ۩߹͕ݟ͔ͭΓWʹ໭͍ͨ͠৔߹͸࠶౓3PVUFઃఆΛมߋ͢Δ͜ ͱͰ؆୯ʹ੾Γ໭͠Λߦ͏͜ͱ͕Ͱ͖·͢ɻ ࣮ӡ༻Λ૝ఆͨ͠έʔε
  15. ࣮ࡍʹ63-ʹΞΫηεͯ͠ΈΔͱCPPLJOGPͷը໘͕දࣔ͞ΕΔ͜ͱ͕֬ೝͰ͖·͢ɻ ॳճΞΫηεͰ͸ҎԼͷ༷ʹ֤αʔϏεʹ͓͍ͯθϩεέʔϧঢ়ଶ͔Βͷىಈ͕ൃੜ͢ΔͨΊɺ Ϩεϙϯεʹ࣌ؒΛཁ͠·͢ɻ ϚΠΫϩαʔϏεΛσϓϩΠ͢Δέʔε ❯❯❯ kubectl get po -n bookinfo

    -w NAME READY STATUS RESTARTS AGE bookinfo-productpage-v1-deployment-757c7cc77b-qwtp2 0/2 Pending 0 0s bookinfo-productpage-v1-deployment-757c7cc77b-qwtp2 0/2 Pending 0 0s bookinfo-productpage-v1-deployment-757c7cc77b-qwtp2 0/2 ContainerCreating 0 0s bookinfo-productpage-v1-deployment-757c7cc77b-qwtp2 0/2 ContainerCreating 0 1s bookinfo-productpage-v1-deployment-757c7cc77b-qwtp2 1/2 Running 0 3s bookinfo-details-v1-deployment-d56fb557b-2xsfz 0/2 Pending 0 0s bookinfo-details-v1-deployment-d56fb557b-2xsfz 0/2 Pending 0 0s bookinfo-details-v1-deployment-d56fb557b-2xsfz 0/2 ContainerCreating 0 0s bookinfo-details-v1-deployment-d56fb557b-2xsfz 0/2 ContainerCreating 0 2s bookinfo-details-v1-deployment-d56fb557b-2xsfz 1/2 Running 0 4s bookinfo-reviews-v3-deployment-66cdd7f69d-76bl9 0/2 Pending 0 0s bookinfo-reviews-v3-deployment-66cdd7f69d-76bl9 0/2 Pending 0 0s bookinfo-reviews-v3-deployment-66cdd7f69d-76bl9 0/2 ContainerCreating 0 0s bookinfo-reviews-v3-deployment-66cdd7f69d-76bl9 0/2 ContainerCreating 0 1s bookinfo-productpage-v1-deployment-757c7cc77b-qwtp2 2/2 Running 0 11s bookinfo-reviews-v3-deployment-66cdd7f69d-76bl9 1/2 Running 0 3s bookinfo-details-v1-deployment-d56fb557b-2xsfz 2/2 Running 0 12s bookinfo-reviews-v3-deployment-66cdd7f69d-76bl9 2/2 Running 0 17s bookinfo-ratings-v1-deployment-6976b4ccf7-d2ts2 0/2 Pending 0 0s bookinfo-ratings-v1-deployment-6976b4ccf7-d2ts2 0/2 Pending 0 0s bookinfo-ratings-v1-deployment-6976b4ccf7-d2ts2 0/2 ContainerCreating 0 0s bookinfo-ratings-v1-deployment-6976b4ccf7-d2ts2 0/2 ContainerCreating 0 2s bookinfo-ratings-v1-deployment-6976b4ccf7-d2ts2 1/2 Running 0 5s bookinfo-ratings-v1-deployment-6976b4ccf7-d2ts2 2/2 Running 0 9s
  16. ʢࢀߟʣ0CTFSWBCJMJUZ ˗.FUSJDT ɹ1SPNFUIFVT (SBGBOBͳͲҰൠతͳ,VCFSOFUFTϝτϦΫεऩूελοΫʹΑΓ࣮ݱɻ ˗-PHHJOH ɹ'MVFOU#JU΍(SBGBOB-PLJͳͲҰൠతͳ,VCFSOFUFTϩάऩूελοΫʹΑΓ࣮ݱɻ ɹಛʹ,OBUJWFͰ͸1PE͕θϩεέʔϧ͢ΔͨΊ͜ΕΒͷελοΫΛ༻ҙ͓ͯ͘͜͠ͱ͸ ɹ௨ৗͷ,VCFSOFUFTར༻ͱൺ΂ͯ΋ॏཁʹͳΔɻ ɹ$PMMFDUJOH-PHTXJUI'MVFOUCJU ɹIUUQTLOBUJWFEFWEPDTJOTUBMMDPMMFDUJOHMPHT

    ˗5SBDJOH ɹ,OBUJWFͰ͸4JEFDBSͱͯ͠1PEʹ*OKFDU͞ΕΔRVFVFQSPYZ͕;JQLJO͓Αͼ ɹ($14UBDLESJWFS΁ͷ4QBO৘ใૹ৴ʹରԠɻ ɹ*TUJP4FSWJDF.FTIಉ༷ΞϓϦέʔγϣϯʹखΛՃ͑Δ͜ͱͳ͘;JQLJO΍+BFHFSΛ༻͍ͯ ɹ5SBDJOH৘ใͷऩूࢀর͕Մೳɻ ɹ"DDFTTJOHSFRVFTUUSBDFT ɹIUUQTLOBUJWFEFWEPDTTFSWJOHBDDFTTJOHUSBDFT