Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Kubernetes #hatenaintern
Slide 2
Slide 2 text
׆ס铺紶ך㰢؆ךַ׆כ Kubernetes Kubernetes Kubernetes
Slide 3
Slide 3 text
Kubernetes kubernetes, k s AWS EKS, Google Cloud GKE, Azure AKS
Slide 4
Slide 4 text
עיםכؤ٤طػ k s ( AWS ECS) k s AWS EKS Google Cloud GKE AWS ECS
Slide 5
Slide 5 text
Kubernetes 1 kubernetes
Slide 6
Slide 6 text
Kubernetes 2 3 k s Cloud Native Computing Foundation(CNCF) kubernetes kubernetes
Slide 7
Slide 7 text
Kubernetes 鎋碷ע䏲鳭 (Infrastructure as Code) /
Slide 8
Slide 8 text
Kubernetes
Slide 9
Slide 9 text
Cluster ˝ ُتذ٭ؿ٭غכ٠٭٭ؿ٭غך啶䡗 ˝ ُتذ٭ؿ٭غ ˝ ؤ٤عٞ٭ٜوٝ٭٤ ˝ ؠٚتذס畘杼䥵䎎 ˝ قهٛشؠؠٚؗغךעُؾ٭ةغמ䬠❠ ˝ ٠٭٭ؿ٭غ ˝ ظ٭ذوٝ٭٤ ˝ ؤ٤طػ㲔车ג״סؤ٤مٖ٭طؔ٤ءٛ خ٭تסױ ˝ 鎋碷ע䏲鳭
Slide 10
Slide 10 text
Pod Pod 1
Slide 11
Slide 11 text
ئؕغ٭قذ٭٤ pod ( ) Proxy, ,
Slide 12
Slide 12 text
٠٭٭ؿ٭غ Pod( ) or kubelet API
Slide 13
Slide 13 text
Kubernetes
Slide 14
Slide 14 text
ٛخ٭تסطإٛ Workloads Service Con g Storage Cluster Metadata Namespace
Slide 15
Slide 15 text
Workloads ؤ٤طػס㲔车מ꞊ٛخ٭ت Pod Pod IP Replicaset Pod Pod ( ) Pod
Slide 16
Slide 16 text
Workloads Deployment Replicaset
Slide 17
Slide 17 text
Workloads ♓┖յ☪㍑סـ٤ث؛٤ךע⮵榫ם Job CronJob job
Slide 18
Slide 18 text
Service Pod Service L Ingress L
Slide 19
Slide 19 text
kubernetes Pod localhost Pod Pod IP pod IP IP Pod IP Pod IP Pod pod
Slide 20
Slide 20 text
Service Pod ( ) 1 pod 2 pod pod IP ClusterIP ( ) NodePort ( ) LoadBalancer( ) etc
Slide 21
Slide 21 text
Service Pod DNS DNS account account.hatena- intern-2022.svc.cluster.local DNS A account(service ).hatena- intern- (namespace ).svc( )
Slide 22
Slide 22 text
Ingress Ingress L (AWS ALB, Google Cloud GCLB, Nginx) Ingress HTTPS
Slide 23
Slide 23 text
ٛخ٭ت畘杼מחַי
Slide 24
Slide 24 text
Manifest YAML kubectl apply -f k s k s
Slide 25
Slide 25 text
ٛخ٭ت⯆ Pod CPU Pod
Slide 26
Slide 26 text
ىٜتزؘشؠ Pod Liveness Probe Pod Readiness Probe Pod
Slide 27
Slide 27 text
⺎榫䓪כ䦡䍖䓪מחַי
Slide 28
Slide 28 text
⺎榫䓪 Replicaset Manifest Node Pod Node
Slide 29
Slide 29 text
靷蕔מ㵚䦡䍖䓪 Horizontal Pod Autoscaler (HPA) CPU Pod Vertical Pod Autoscaler (VPA) CPU,
Slide 30
Slide 30 text
ـ٤ث؛٤ך⮵榫ص٭ٜ磆☭
Slide 31
Slide 31 text
Minikube kubernetes https://minikube.sigs.k s.io/docs/start/ kubernetes kind
Slide 32
Slide 32 text
Kustomize https://github.com/kubernetes-sigs/kustomize k s Dev, Stg, Prd Manifest kustomization.yaml secret con g
Slide 33
Slide 33 text
Ska old https://ska old.dev/ k s skaffold.yaml docker
Slide 34
Slide 34 text
Kubernetes
Slide 35
Slide 35 text
ؓةؘ٤ر Hatena-Intern-
Slide 36
Slide 36 text
瑬┉鼧 Hatena-Intern-
Slide 37
Slide 37 text
׆ס侇ꝴעـ٤ث؛٤ך Kubenetes codespaces
Slide 38
Slide 38 text
ئ٭لتס啶䡗
Slide 39
Slide 39 text
ُؼنؘتعס啶䡗 k8s ├── account │ ├── app.yaml │ ├── config │ │ └── schema.sql │ ├── db.yaml │ ├── kustomization.yaml │ ├── secret │ │ └── ecdsa-private.pem │ └── test.yaml ├── blog │ ├── app.yaml │ ├── config │ │ └── schema.sql │ ├── db.yaml │ ├── kustomization.yaml │ ├── secret │ │ └── account-ecdsa-public.pem │ └── test.yaml ├── kustomization.yaml ├── namespace.yaml ├── renderer-go │ ├── app.yaml │ └── kustomization.yaml └── system └── sa.yaml k8s account/blog/renderer-go kustomization.yaml kustomize
Slide 40
Slide 40 text
k s/blog/kustomization.yaml apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - app.yaml - db.yaml - test.yaml secretGenerator: - name: blog-app-secret files: - secret/account-ecdsa-public.pem configMapGenerator: - name: blog-app-env-vars literals: # (snip) - name: blog-db-schema-config files: - config/schema.sql
Slide 41
Slide 41 text
澬鏀 % make up 8080 % kubectl port-forward service/blog 8080:8080 # ϩʔΧϧͷ8080ϙʔτ ͷ௨৴Λblog service ͔Βෛՙࢄ͞Ε͍ͯΔpodͷ8080ϙʔτʹసૹ͢Δ Pod vscode terminal PORTS 8080
Slide 42
Slide 42 text
ئ٭لتֿ颯Ⳃיַ׆כ澬鏀 context % kubectl config use-context hatena-intern-2022 % kubectl get pods
Slide 43
Slide 43 text
Pod services/blog/templates/index.html Pod % kubectl get pods -w % kubectl describe pods
Slide 44
Slide 44 text
ظفشء # Podͷৄࡉใͷදࣔɻpod͕ىಈ͠ͳ͍߹ಛʹ"Events:"ཝʹ % kubectl describe pod blog # ωʔϜεϖʔε্ʹ͋ΔϦιʔεͷใΛදࣔ % kubectl get all # ىಈ͍ͯ͠ΔPodͰγΣϧΛىಈ͢Δ % kubectl exec -it svc/account -c account !" /bin/sh ! ps blog ! wget -q -O - blog:8080 ! nslookup blog
Slide 45
Slide 45 text
瑬◅鼧 鋗嫎㚺䬵ئ٭لتס鴑ⱶ
Slide 46
Slide 46 text
renderer services/renderer-ts k s services/renderer-go k8s/renderer-go k8s/renderer-ts
Slide 47
Slide 47 text
ُؼنؘتع ˝ 鴑ⱶُؼنؘتع ˝ k8s/renderer-ts/kustomization.yaml ˝ k8s/renderer-ts/app.yaml ˝ 稴ُؼنؘتع ˝ skaffold.yaml ˝ k8s/kustomization.yaml ˝ k8s/blog/kustomization.yaml
Slide 48
Slide 48 text
ُؼنؘتعס鴑ⱶ % cp -R k8s/renderer-go k8s/renderer-ts % sed -i -e 's/renderer-go/renderer-ts/g' k8s/renderer-ts/*.yaml k8s/renderer-go k8s/ renderer-ts renderer-go renderer-ts
Slide 49
Slide 49 text
ُؼنؘتعס稴 ska old.yaml apiVersion: skaffold/v2beta5 kind: Config metadata: name: hatena-intern-2021 build: artifacts: # (snip) - image: hatena-intern-2021-renderer-go context: services/renderer-go - image: hatena-intern-2021-renderer-ts # ! context: services/renderer-ts # ! local: # (snip) services/renderer-ts docker k s
Slide 50
Slide 50 text
ُؼنؘتعס稴 k s/kustomization.yaml apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: hatena-intern-2021 resources: - namespace.yaml - account - blog - renderer-go - renderer-ts # !
Slide 51
Slide 51 text
ُؼنؘتعס稴 k s/blog/kustomization.yaml apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization # (snip) configMapGenerator: - name: blog-app-env-vars literals: - MODE=development - DATABASE_DSN=root@(blog-db:3306)/intern_2021_blog?time_zone=UTC&parseTime=true&loc=UTC - ACCOUNT_ADDR=account:50051 - RENDERER_ADDR=renderer-ts:50051 # ! - name: blog-test-env-vars # (snip) blog renderer-go renderer-ts
Slide 52
Slide 52 text
Pod kubectl get pods Pod kubectl describe pod renderer-ts
Slide 53
Slide 53 text
renderer-ts kubectl get pods Pod renderer-ts
Slide 54
Slide 54 text
push push typescript use-renderer-ts-dekokun push ts renderer-ts % git switch -c use-renderer-ts-dekokun % git add k8s/ skaffold.yaml % git commit -m'rendererΛtypescript࣮ʹมߋ' % git push origin use-renderer-ts-dekokun
Slide 55
Slide 55 text
ظ٭ذي٭ت釳ַיײֹ ֽױׄؤ٭ػ٭նؓوٛآ٭ب٘٤ꝧ氦מ䏔מ玮חכ䓙ַױն % mysql -u root -h 127.0.0.1 -P 3306 intern_2022_blog MySQL [intern_2022_blog]> show tables; +----------------------------+ | Tables_in_intern_2022_blog | +----------------------------+ | blogs | | entries | | sessions | | users | +----------------------------+ MySQL [intern_2022_blog]> select count(*) from blogs; +----------+ | count(*) | +----------+ | 0 | +----------+ 䫘禈ך׀םַ㕙⺬յَ٭عס鬇鴜ֿך׀יַםַ⺎耆䓪ֵֿױն♓┖סؤُ٤غךَ٭عنؚ٠٭غיׂדַ # ϙʔτͷసૹ % kubectl port-forward svc/blog-db 3306:3306
Slide 56
Slide 56 text
ױכ״ kubernetes kubernetes kubernetes Manifest