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
Start a fullnode on GKE in <2 min - Alexander P...
Search
GoDays
January 30, 2019
Technology
0
110
Start a fullnode on GKE in <2 min - Alexander Peters, IOV
Start a fullnode on GKE in <2 min - Alexander Peters, IOV
GoDays
January 30, 2019
Tweet
Share
More Decks by GoDays
See All by GoDays
Standing on the shoulders of giants - Tomasz Janiszewski - D2IQ
godays
1
110
How to instrument Go code in 2020 - Björn Rabenstein - Grafana Labs
godays
1
230
12 Factor CLI Apps with Cobra - Markus Zimmermann - cosee
godays
0
370
Integration and end-to-end testing with TestContainers-Go - Nikolay Kuznetsov & Erdem Toraman - Zalando
godays
1
980
Fun with Functions - Frank Müller - Loodse
godays
0
100
Amazon SNS/SQS with Go - Paul Borlin - Compassion International
godays
1
270
Writing a language parser in 15min (or less) - Xavier Coulon - Red Hat
godays
0
93
A story about distributed computing before the cloud arrived - Rogier Lommers - bol.com
godays
0
87
Serverless Ops – Bye-bye Bash, Hello Go! - Rob Sutter - Amazon
godays
0
79
Other Decks in Technology
See All in Technology
Grafanaのvariables機能について
tiina
0
200
Ask! NIKKEI RAG検索技術の深層
hotchpotch
10
1.6k
Grid表示のレイアウトで Flow layoutsを使う
cffyoha
1
150
サーバーレスで楽しよう!お気軽に始められる3つのポイント / Have fun with Serverless!
_kensh
2
250
カスタムインストラクションでGitHub Copilotをカスタマイズ!
07jp27
8
1.2k
信頼性を支えるテレメトリーパイプラインの構築 / Building Telemetry Pipeline with OpenTelemetry
ymotongpoo
9
5.1k
教師なし学習の基礎
kanojikajino
4
370
Site Reliability Engineering on Kubernetes
nwiizo
6
4.5k
ObservabilityCON on the Road Tokyoの見どころ
hamadakoji
0
230
CloudWatch Container Insightsを使ったAmazon ECSのリソース監視
umekou
1
130
Creative Pair
kawaguti
PRO
1
140
Postman Vaultを使った秘密情報の安全な管理
nagix
3
190
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.5k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Code Reviewing Like a Champion
maltzj
521
39k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.2k
Become a Pro
speakerdeck
PRO
26
5.1k
Done Done
chrislema
182
16k
The Cult of Friendly URLs
andyhume
78
6.2k
Building Better People: How to give real-time feedback that sticks.
wjessup
366
19k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
BBQ
matthewcrist
86
9.4k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
A better future with KSS
kneath
238
17k
Transcript
Start a full node on GKE in <2 min 2019
- Alexander Peters
About Me Alexander Peters Backend lead at IOV.one Go, K8s,
DevOps and Security
Architecture V S S iNet S L B
Architecture V S S iNet S L B
Containers
Minimal Container Images • Scratch Image • Alpine Linux when
OS required https://alpinelinux.org • Distroless base images https://github.com/GoogleContainerTools/distroless
State
State transfer • VolumeSnapshot Controller • VolumeSnapshot Provisioner > Disk
snapshots #FTW https://github.com/kubernetes-incubator/external-storage
Best height? F F F F F C
Take snapshot F F F C V
CRDs: VolumeSnapshots + Data > kubectl get volumesnapshots NAME AGE
godays-snap-1548763215780962127 17m godays-snap-1548763506627916883 12m godays-snap-1548763807378144367 7m apiVersion: volumesnapshot.external-storage.k8s.io/v1 kind: VolumeSnapshotData spec: gcePersistentDisk: snapshotId: pvc-d92e9529-2033-11e9-8eb6-42010a8400241548763507112695918
Let’s use it!
VolumeSnapshot Provisioning kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: snapshot-promoter provisioner:
volumesnapshot.external-storage.k8s.io/snapshot-promoter reclaimPolicy: Delete volumeBindingMode: Immediate parameters: type: pd-ssd https://github.com/kubernetes-incubator/external-storage/blob/master/snapshot/doc/user-guide.md
Sentry - Full Node Config apiVersion: apps/v1 kind: StatefulSet spec:
... volumeClaimTemplates: spec: storageClassName: snapshot-promoter selector: matchLabels: group: "godays" matchExpressions: - {key: approved, operator: Exists}
Not a live demo
PVC - Provisioning > kubectl get pvc -w ... godays-fullnode-xrpc-0
Pending snapshot-promoter 19s godays-fullnode-xrpc-0 Pending snapshot-promoter 22s godays-fullnode-xrpc-0 Pending snapshot-promoter 24s godays-fullnode-xrpc-0 Pending snapshot-promoter 26s godays-fullnode-xrpc-0 Pending snapshot-promoter 28s godays-fullnode-xrpc-0 Pending snapshot-promoter 30s godays-fullnode-xrpc-0 Pending snapshot-promoter 32s godays-fullnode-xrpc-0 Pending pvc-23c64f9c-2308-11e9-8eb6-42010a840024 0 snapshot-promoter 34s godays-fullnode-xrpc-0 Bound pvc-23c64f9c-2308-11e9-8eb6-42010a840024 33Gi RWO snapshot-promoter 34s godays-fullnode-xrpc-0 Bound pvc-23c64f9c-2308-11e9-8eb6-42010a840024 33Gi RWO snapshot-promoter 34s
Pod - Deployment > kubectl get pods -w godays-fullnode-xrpc-0 0/3
Pending 0 0s godays-fullnode-xrpc-0 0/3 Pending 0 34s godays-fullnode-xrpc-0 0/3 Init:0/2 0 34s godays-fullnode-xrpc-0 0/3 Init:0/2 0 44s godays-fullnode-xrpc-0 0/3 Init:1/2 0 45s godays-fullnode-xrpc-0 0/3 PodInitializing 0 46s godays-fullnode-xrpc-0 2/3 Running 0 47s godays-fullnode-xrpc-0 3/3 Running 0 59s
• Rolling snapshots *) • PVC not deleted • Data
integrity issues • Security concerns • High frequency Problems *) https://github.com/kubernetes-incubator/external-storage/issues/875
Summary • All good now! • Fast startup time <
2min • Works well with Horizontal Pod Autoscaler • Kubernetes v1.12 as an alpha feature
Thanks!
Bonus: Merkle tree https://en.wikipedia.org/wiki/Merkle_tree
Bonus: Working With Scratch Image • Go static compilation •
COPY ca-bundle.pem /etc/ssl/certs/ca-certificates.crt https://curl.haxx.se/docs/caextract.html • ENV ZONEINFO /zoneinfo.zip COPY zoneinfo.zip / In $GOROOT/lib/time/zoneinfo.zip https://golang.org/pkg/time/#LoadLocation