Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
プロダクションレディ Pods / Production-Ready Pods
Search
Kazuki Suda
December 20, 2017
Technology
5
1.9k
プロダクションレディ Pods / Production-Ready Pods
市ヶ谷Geek★Night #16 Kubernetes Christmas! /
https://ichigayageek.connpass.com/event/74057/
Kazuki Suda
December 20, 2017
Tweet
Share
More Decks by Kazuki Suda
See All by Kazuki Suda
個人的、Kubernetes の最新注目機能! (2024年5月版)
superbrothers
0
75
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher" エラーが発生する原因と対策
superbrothers
0
1.3k
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版)
superbrothers
2
1.4k
コミュニティ/ 勉強会紹介
superbrothers
0
210
高可用性、省力運用を目指す 自宅 Kubernetes クラスタ (K8s@home #1)
superbrothers
12
5.2k
KubeCon + CloudNativeCon Europe 2022 Recap
superbrothers
0
48
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後!
superbrothers
2
7.5k
わかる!metadata.managedFields
superbrothers
4
2k
Local ephemeral-storage のメトリクスを取得するのに kube-summary-exporter がべんり / kube-summary-exporter is useful to get the metrics of local ephemeral-storage
superbrothers
0
640
Other Decks in Technology
See All in Technology
大幅アップデートされたRagas v0.2をキャッチアップ
os1ma
2
530
AWS re:Invent 2024で発表された コードを書く開発者向け機能について
maruto
0
190
AWS re:Invent 2024 ふりかえり
kongmingstrap
0
130
LINEヤフーのフロントエンド組織・体制の紹介【24年12月】
lycorp_recruit_jp
0
530
ガバメントクラウドのセキュリティ対策事例について
fujisawaryohei
0
530
UI State設計とテスト方針
rmakiyama
2
570
レンジャーシステムズ | 会社紹介(採用ピッチ)
rssytems
0
150
生成AIのガバナンスの全体像と現実解
fnifni
1
190
Amazon SageMaker Unified Studio(Preview)、Lakehouse と Amazon S3 Tables
ishikawa_satoru
0
150
NW-JAWS #14 re:Invent 2024(予選落ち含)で 発表された推しアップデートについて
nagisa53
0
260
OpenAIの蒸留機能(Model Distillation)を使用して運用中のLLMのコストを削減する取り組み
pharma_x_tech
4
560
どちらを使う?GitHub or Azure DevOps Ver. 24H2
kkamegawa
0
740
Featured
See All Featured
Bash Introduction
62gerente
608
210k
Testing 201, or: Great Expectations
jmmastey
40
7.1k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
How GitHub (no longer) Works
holman
311
140k
Gamification - CAS2011
davidbonilla
80
5.1k
Six Lessons from altMBA
skipperchong
27
3.5k
Docker and Python
trallard
42
3.1k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
2
170
Site-Speed That Sticks
csswizardry
2
190
Transcript
䋐٠靼(FFLӹ/JHIU ,B[VLJ4VEBLTVEB![MBCDPKQ !TVQFSCSPUIFST ϓϩμΫγϣϯϨσΟ Pods
,B[VLJ4VEB!TVQFSCSPUIFST Ӝ اؿزؐؑ،ؒٝآص،!;-BC Ӝ ,VCFSOFUFT.FFUVQ5PLZP⚺⪵
،آؑٝت 1PETהכ⡦ַ فٗتؙءّٖٝر؍1PET
1PETהכ⡦ַ
Ӝ 醱侧ך؝ٝذشה醱侧ךنُٔ٦ي Ӝ رفٗ؎ך剑㼭⽃⡘ Ӝ *1QFS1PE 1PET 1PE Volume 8FCTFSWFS
'JMF1VMMFS
apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: -
name: nginx image: nginx:1.13.7 ports: - containerPort: 80 Ӝ 醱侧ך؝ٝذشה醱侧ךنُٔ٦ي Ӝ رفٗ؎ך剑㼭⽃⡘ Ӝ *1QFS1PE 1PET
1PEٓ؎ؿ؟؎ؙٕ 3VOOJOH 5FSNJOBUJOH 4DIFEVMJOH
فٗتؙءّٖٝر؍1PET
#VJMEJOH $POUBJOFST Ӝ 5IF5XFMWF'BDUPS"QQ Ӝ 㼭ְׁك٦أ؎ً٦آ⢪ֲ Ӝ ♶銲זػح؛٦آ؎ٝأز٦ٕ׃זְ NVMUJTUBHFCVJMET Ӝ
فٗإأ؝ٝذش Ӝ ؚٗכTUEPVU TUEFSSח⳿⸂ׅ
NVMUJTUBHFCVJMET 6TFNVMUJTUBHFCVJMET]%PDLFS%PDVNFOUBUJPO FROM golang:1.7.3 WORKDIR /go/src/github.com/alexellis/href-counter/ RUN go get -d
-v golang.org/x/net/html COPY app.go . RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app . FROM alpine:latest RUN apk --no-cache add ca-certificates WORKDIR /root/ COPY --from=0 /go/src/github.com/alexellis/href-counter/app . CMD ["./app"]
㹋遤ח䗳銲זٔا٦أָ婍גְזְظ٦سחأ؛آُ٦ٕ ׁג׃תֲ Ӝ ؝ٝذشך䗳銲剑⡚ꣲ䗳銲זٔا٦أ䭷㹀ׅ SFTPVSDFSFRVFTUT 4DIFEVMJOH
SFTPVSDFSFRVFTUT Ӝ ؝ٝذشך㹋遤ח䗳銲剑⡚ꣲ䗳銲זٔا٦أ Ӝ أ؛آُ٦ׁٕ؝ٝذشךٔا٦أ銲実ך さ鎘ָظ٦سך㺁ꆀ״㼰זְֿה⥂鏾ׅ apiVersion: v1 kind: Pod
metadata: name: kuard spec: containers: - image: gcr.io/kuar-demo/kuard- name: kuard resources: requests: cpu: "500m" memory: "128Mi" ports: - containerPort: 8080 name: http protocol: TCP
3VOOJOH ظ٦سךٔا٦أ⢪ְⴖג׃תֲ ،فٔ؛٦ءָؙّٝٓحءُ׃ג㔿תג׃תֲ ؙٔؒأز「ֽ彊⪒ָ穄חؙٔؒأزָֹג׃תֲ Ӝ ؝ٝذشךٔا٦أ⢪欽ꆀך♳ꣲ䭷㹀ׅ SFTPVSDFMJNJUT Ӝ ؝ٝذشךقٕأثؑحؙ鏣㹀ׅ -JWFOFTTQSPCF
欰ֹגְַוֲַ 3FBEJOFTTQSPCF 䘔瘶דַֹוֲַ
apiVersion: v1 kind: Pod metadata: name: kuard spec: containers: -
image: gcr.io/kuar-demo/kuar name: kuard resources: requests: cpu: "500m" memory: "128Mi" limits: cpu: "1000m" memory: "256Mi" ports: - containerPort: 8080 name: http protocol: TCP Ӝ ؝ٝذشךٔا٦أ⢪欽ꆀך♳ꣲ䭷㹀ׅ $16♳ꣲ馄ִג⢪欽׃זְ NFNPSZ♳ꣲ馄ִה00.ח״فٗإأָ媷ׁ SFTPVSDFMJNJUT
-JWFOFTTQSPCF Ӝ ؝ٝذشⰻفٗإأך娤崞湊鋔 Ӝ 㣟侁ׅה؝ٝذش䓼ⵖ涸חⱄ饯⹛ׅ name: kuard spec: containers: -
image: gcr.io/kuar-demo/kuard-amd64:1 name: kuard ports: - containerPort: 8080 name: http protocol: TCP livenessProbe: httpGet: path: /healthy port: 8080 initialDelaySeconds: 5 timeoutSeconds: 1 periodSeconds: 10 failureThreshold: 3 readinessProbe: httpGet: path: /ready port: 8080 initialDelaySeconds: 30 timeoutSeconds: 1 periodSeconds: 10 failureThreshold: 3
-JWFOFTTQSPCF Ӝ FYFD؝وٝسך㹋遤 &YJU؝٦سָדIFBMUIZⴻ㹀 Ӝ IUUQ(FU)551(&5ؙٔؒأز أذ٦ةأ؝٦سָ⟃♳劢弫דIFBMUIZⴻ㹀 Ӝ UDQ4PDLFU5$14PDLFU ؝طؙءָّٝ然甧ׅלIFBMUIZⴻ㹀
http.HandleFunc("/healthy", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("OK")) } http.ListenAndServe(":8080", nil)
3FBEJOFTT1SPCF Ӝ ؝ٝذشⰻفٗإأָؙٔؒأزח 䘔瘶דַֹ Ӝ 㣟侁ׅה4FSWJDFT鸐ׄג زٓؿ؍حؙ「⥋׃זְ 6OSFBEZ name: kuard
spec: containers: - image: gcr.io/kuar-demo/kuard-amd64:1 name: kuard ports: - containerPort: 8080 name: http protocol: TCP livenessProbe: httpGet: path: /healthy port: 8080 initialDelaySeconds: 5 timeoutSeconds: 1 periodSeconds: 10 failureThreshold: 3 readinessProbe: httpGet: path: /ready port: 8080 initialDelaySeconds: 30 timeoutSeconds: 1 periodSeconds: 10 failureThreshold: 3
4FSWJDFT Ӝ ⟎䟝*1הه٦ز Ӝ ٓكٕإؙٖةח״ 1PEךؚٕ٦ؾؚٝ Ӝ ؟٦ؽأة؎ف $MVTUFS*1 /PEF1PSU
-PBE#BMBODFS 1PE app web 1PE app web 3FQMJDB4FU 4FSWJDF VIP: 10.0.0.249 Selector: app=web
apiVersion: v1 kind: Service metadata: name: kuard spec: type: ClusterIP
selector: app: kuard ports: - protocol: TCP port: 8080 targetPort: 8080 4FSWJDFT Ӝ ⟎䟝*1הه٦ز Ӝ ٓكٕإؙٖةח״ 1PEךؚٕ٦ؾؚٝ Ӝ ؟٦ؽأة؎ف $MVTUFS*1 /PEF1PSU -PBE#BMBODFS
http.HandleFunc("/ready", func(w http.ResponseWriter, r *http.Request) { message := "" //
Check database if err := db.Ping(); err != nil { message += fmt.Sprintf("database: %s\n", err) } if len(message) > 0 { // Send 503 http.Error(w, message, http.StatusServiceUnavailable) } else { w.Write([]byte("OK")) } }) http.ListenAndServe(":8080", nil)
5FSNJOBUJOH 穄✪⚥חؙٔؒأزָֹגؒٓ٦鵤׃ג׃תֲ Ӝ ؝ٝذش(SBDFGVMTIVUEPXOׇׁ UFSNJOBUJPO(SBDF1FSJPE4FDPOET QSF4UPQؿحؙ4*(5&3.ךعٝسؚٔٝ
apiVersion: apps/v1 kind: Deployment metadata: name: kuard spec: selector: matchLabels:
app: kuard template: metadata: labels: app: kuard spec: terminationGracePeriodSeconds: 60 containers: - image: gcr.io/kuar-demo/kuard-amd64:1 name: kuard ports: - containerPort: 8080 name: http protocol: TCP livenessProbe: UFSNJOBUJPO(SBDF1FSJPE4FDPOET Ӝ 1PE(SBDFGVMח穄✪ׇׁ䗳銲ז猱侧 Ӝ 鏣㹀׃猱侧ָ穗麓ׅה؝ٝذشח4*(,*--ָ鷏⥋ׁ
apiVersion: apps/v1 kind: Deployment metadata: labels: app: nginx name: nginx
spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx:1.13.7 name: nginx lifecycle: preStop: exec: command: ["nginx", "-s", "quit"] Ӝ 1PEך穄✪ؿؑ؎ؤך剑ⴱח㹋遤ׁ 0QUJPOBM ـٗحؙ׃זֽלזזְ ず劍 ֿהח岣䠐 Ӝ QSF4UPQؿحؙ㹋遤䖓ח4*(5&3.ָ鷏⥋ׁ QSF4UPQؿحؙ
倜鋉؝طؙءّٝ 䱸竲幥؝طؙءّٝ QSF4UPQⳢ椚 4*(5&3.Ⳣ椚 1PEך穄✪㨣 0QUJPOBM QSF4UPQؿحؙ 4FSWJDFTךة٦حزַ㢩 LVCFQSPYZָJQUBCMFTٕ٦ٕ刿倜׃ծ倜鋉䱸竲ָזֻז
ֿ⟃꣬倜鋉䱸竲כזֻז QSF4UPQؿحַؙ4*(5&3.ד (SBDFGVMחؙٗ٦ؤׅ䗳銲ָ֮ (SBDF1FSJPE4FDPOET䖓 穄✪׃גְזְ㜥さ رؿٕؓز猱 4*(,*-- 4*(5&3. ,VCFSOFUFT鑫鍑1PETך穄✪2JJUB
תה
תה Ӝ #VJMEJOH$POUBJOFST كأزفؙٓذ؍أח䖞ֲ Ӝ 1PE4DIFEVMJOH 䗳銲剑⡚ꣲ䗳銲זٔا٦أ鏣㹀ׅ SFTPVSDFSFRVFTUT Ӝ
1PE3VOOJOH قٕأثؑحؙ鏣㹀ׅ -JWFOFTT3FBEJOFTTQSPCF ٔا٦أ⢪欽ꆀח♳ꣲ鏣㹀ׅ SFTPVSDFMJNJUT Ӝ 1PE5FSNJOBUJOH (SBDFGVMTIVUEPXOׇׁ QSF4UPQؿحؙ4*(5&3.عٝسؚٔٝ
8FˏSF)JSJOH IUUQT[MBCDPKQ ,VCFSOFUFT %PDLFS 1SPNFUIFVT (PMBOH $PSF04
2VFTUJPOT