Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
インフラ知識や土台の知識なしでk8sに挑んでいる話.pdf
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
キット
February 28, 2020
Technology
350
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
インフラ知識や土台の知識なしでk8sに挑んでいる話.pdf
キット
February 28, 2020
Transcript
91 slides
インフラ知識や土台の知識な しでk8sに挑んでいる話 2020/02/28 Kubernetes超入門勉強会 〜 ズボラなおれが始めるk8s 〜
自己紹介 名前:キット 属性:プログラマー、講師 活動拠点:関西→東京
Kubernetes クバネティス クバネテス クーべネティス クーバネティス
ところで略称k8sって?
Kubernetes ↓ k8s 8文字
ヌメロニウム ヌメロニム(英語: numeronym)もしくは数略語は、長い英単語を 数字で省略して表現する語。比較的長い英単語を、その先頭と末 尾のみ残して、間に残された文字をその文字数(桁数)で省略す る。代表的な例に i18n など。 引用:https://ja.wikipedia.org/wiki/ヌメロニム
閑話休題
なぜKubernetesに挑戦することに なったか
Kubernetesって名前、よく聞く
Kubernetes触ってみたい
前提となる知識が多そう
Docker コンテナ クラウド 運用 インフラ知 識全般 セキュリ ティ マイクロ サービス
問題意識がないから、なにからやっていい かわかんない
あるのはただ「k8s触りたい」だけ だった
なにから初めていいかわからん
None
いいや、とりあえず現場入っちゃえ
このセッションについて このセッションを聞くと... 今まで「k8sってよく聞くよね。名前は知ってるよ。知らんけど」な人 が、「k8s触ってみようかな」 となればいいな
前提 自分の現場では独自に構築されたk8sクラスターを使っているの で、AKS、GKE、EKSといったマネージメントサービスの話は出て きません。
目次 • k8sを完全に理解するまでにやったこと • k8s全くわからない • 自分が気にした(している)ところ
k8sを完全に理解するまでにやったこと
なにはともあれ公式ドキュメント https://kubernetes.io/ja/docs/concepts/overview/what-is-kubernetes/
そしてチュートリアル https://kubernetes.io/ja/docs/tutorials/
所感 • 用語多すぎわからん • 結局k8sってどんなところがいいの?
Node Deployment Service Secret クラスター Pod
カナリア リリース ローリングアッ プデート Blue/Green
Kubernetesクラスタ この時点での自分の理解 Node A Node B Node C Pod A
Pod B Pod C Pod D Pod E
この時点での自分の理解 Pod A コンテナ コンテナ
いいや、とにかくアプリケーションをk8s上で 動かそう
ローカルのminikubeで試す
minikubeとは PC上に仮想的にKubernetesの環境をインストールすることがで きるもの。 ただし、単一ノードのみという制約がある
minikubeクラスタ minikube Node Pod A Pod B Pod C Pod
D
k8sでアプリケーションを動かす際に 立ちはだかる壁、Docker
k8sでアプリケーションを最低限動かすためにやったこと • 動かすアプリを作る • Dockerイメージをビルドする • Dockerレジストリにビルドしたイメージを登録する • k8sのマニフェスト用意してデプロイ
k8sでアプリケーションを最低限動かすためにやったこと • 動かすアプリを作る • Dockerイメージをビルドする • Dockerレジストリにビルドしたイメージを登録する • k8sのマニフェスト用意してデプロイ
この時点での自分がDockerでできること • docker-compose.yamlを書いて • docker-compose upを実行して • docker-compose downで落とせる 以上
デプロイのイメージ LocalのDocker レジストリ ①Dockerイメー ジをpush Kubernetesクラスタ Pod コンテナ ③Podを作成して イメージpull
②マニフェストを applyする ④無事コンテナ が起動する
デプロイ後の構成 Kubernetesクラスタ Ingress Service Pod Pod Pod
Kubernetesのリソースについての雑な理解 • Ingress→ロードバランサ的な物。外部からのアクセスを管理 する • Service→Podに対する単一のエンドポイント。PodはIPが不 安定なのでServiceに対してアクセスしたらいいようにPodに振 り分けてくれる • Pod→アプリケーションの単位。こいつの中でアプリケーション
のコンテナが動く
試したこと • deleteしてもPodは復活するか • レプリカセットを複数にしてstern 試したいこと • Nodeを複数立ててPodがランダムに立ち上がるかを見たい
反復して使ったコマンド • kubectl get 〜 • kubectl apply -f •
kubectl delete • stern • kubectx • kubens
今やるなら... IngressとServiceなしで動かす Kubernetesクラスタ Pod Pod Pod
ハマったところ
Podを立ち上げる際にDocker Imageのpull 時にlocalhostのレジストリに対して connection refused
デプロイのイメージ LocalのDocker レジストリ Dockerイメージを push Kubernetesクラスタ Pod pullできない ローカルPCから はpullもできる
minikubeを早々に諦める
Docker Desktopを使う
もうk8sへのデプロイは覚えた。 完全に理解した!
目次 • k8sを完全に理解するまでにやったこと • k8s全くわからない • 自分が気にした(している)ところ
k8s全くわからない
完全に理解してからk8sが全く わからなくなったきっかけ
https://www.amazon.co.jp/Kubernetes実践ガイド-クラウド ネイティブアプリケーションを支える技 術-impress-top-gear/dp/4295006637
全くわからない • Kubernetesクラスタ構築に触れている • Kubernetesのアーキテクチャや土台となっている技術につい て詳しく解説がされている • Kubernetesの豊富な機能について網羅している(ように見え る)
当時の自分から見たk8sの全て Pod Deployment Service Ingress kubectl apply kubectl delete
Kubernetes実践ガイドを読んだ後に見えたk8sの世界 今まで全てだと 思っていた範囲
本当のk8sの世界はもっと広いかもしれない 今まで全てだと 思っていた範囲 Kubernetes実践 ガイドの範囲
良い本です
この本を読むタイミング • 入門書として読むものではない「実践」ガイドだし • 「k8s楽勝じゃん」と思ったとき • k8sの内部に踏み込みたくなったとき • k8sを自分で構築してみたくなったとき
目次 • k8sを完全に理解するまでにやったこと • k8s全くわからない • 自分が気にした(している)ところ
気にした(している)ところ
Nodeってなに?
Nodeって言葉、指す物が 抽象的すぎない?
Nodeとは ノード(node)とは、「結び目」「集合点」「節」といった意味です。コ ンピュータネットワークは、点(装置)とそれを結ぶ線(伝送路)で 表すことができます。このときの「点」を「ノード」といい、コンピュー タやルータ、プリンタなどがノードになります。 産業分野では、工場のネットワークに接続された通信機能搭載の センサや測定器、コントローラなどがノードに相当します。また、自 動車や家電製品も、インターネットに接続された場合は、ノードに なります。 引用:https://www.keyence.co.jp/ss/general/iot-glossary/node.jsp
k8sでいうNodeとは Kubernetesにおけるワーカーマシンです。1つのノードはクラス ターの性質にもよりますが、1つのVMまたは物理的なマシンで す。 引用:https://kubernetes.io/ja/docs/concepts/architecture/nodes/
つまりこういうこと? 物理サーバー (Node) 物理サーバー (Node) 物理サーバー (Node) Kubernetesクラスタ
もしくはこう? 物理サーバー VM (Node) VM (Node) VM (Node) Kubernetesクラスタ
こうもできるの? 物理サーバー (Node) 物理サーバー VM (Node) VM (Node) Kubernetesクラスタ
レプリカセットを増やすことでどう嬉しいのか
Podの数を増やすとなにが嬉しいの? Ingeress Service Pod
Podの数を増やすとなにが嬉しいの? Ingeress Service Pod Pod Pod 単純に負荷分散にはなる
Podの数を増やすとなにが嬉しいの? Ingeress Service Pod Pod Pod 可用性をあげることにもなる
Node Podの数を増やすとなにが嬉しいの? Ingeress Service Pod Pod Pod 同じNodeに全てのPodがいるとNodeが死んだとき終わるのでは?
Node Node Podの数を増やすとなにが嬉しいの? Ingeress Service Pod Pod Pod じゃあNodeも複数用意する
物理マシン Node Node Podの数を増やすとなにが嬉しいの? Ingeress Service Pod Pod Pod でもNodeが仮想サーバだと、ハード障害どうするの?
なるほどそのためにこうできるのか 物理サーバー (Node) 物理サーバー (Node) 物理サーバー (Node) Kubernetesクラスタ
そもそも... • Podが落ちるってどんな障害想定される? • Nodeが落ちるってどんな(以下略 • ハード障害はまあわかる
1Podに複数コンテナはあり?
1つのPodで複数のコンテナを稼働させられる Webサーバー DB
1つのPodで複数のコンテナを稼働させられる Webサー バー DB Webサー バー DB Webサー バー DB
Pod B Pod C Pod A
1つのPodで複数のコンテナを稼働させられる Webサー バー DB Webサー バー Webサー バー Pod A
Pod B Pod C
1つのPodで複数のコンテナを稼働させられる 注意点として、単一のPod内で同じ環境に配備され、同時管理される複数のコンテナを グルーピングするのは、比較的に発展的なユースケースとなります。 ユーザーは、コン テナ群が密接に連携するような、特定のインスタンスにおいてのみこのパターンを使用 するべきです。 引用:https://kubernetes.io/ja/docs/concepts/workloads/pods/pod-overview/
ConfigMapどの単位で持ったらいいの?
ConfigMapの雑な理解 環境変数的なのを持たせるやつ Pod ConfigMap データソースの情報とか? なんか見に行く
ConfigMapを持つ単位 アプリC アプリB アプリA ConfigMap A ConfigMap B ConfigMap C
ConfigMapを持つ単位 アプリC アプリB アプリA ConfigMap A
ところでk8sを使うメリットって?
自分が感じたk8sを使うわかりやすいメリット 運用のことを自然と考えられる 冗長化が一瞬でできる
まとめ
なんとなくk8sを触ってみたい人は まずは狭い世界で楽しむのが良いと思う
土台知識がないズボラな人が「k8sを触る」には • k8sの豊富な機能や使う上でのメリットは一旦置いておこう • kubectl applyでとりあえずデプロイしてみよう • Podを増やしたり減らしたり、消したりして「触ってる感」を出そ う
ご清聴ありがとうございました
More Decks by キット
See All by キット
新人研修講師の体験を通して考える自己学習のアプローチ
kit0707
0
880
Other Decks in Technology
See All in Technology
E2E Test というハーネス — AI時代の自動テスト民主化
daishukojima
3
1.4k
契約書SaaSにAIエージェントを組み込む
sansantech
PRO
0
150
DevOps Agentにあらゆるセキュリティインシデントのトリアージを任せた件
jirtosterone
1
160
常時稼働エージェントの作り方(Claude公式ブログを資料化)
minorun365
PRO
11
19k
属人化したISMS運用をGitHubとAIで仕組み化した1年間の記録
sioncojp
4
2.6k
自治体AIコンタクトセンター、何をどこに任せる?~Amazon Connect Customer +Amazon Bedrockの実践知~ / 20261107 Satoshi Torano
shift_evolve
PRO
1
140
市販IoT機器や自作IoT機器とHomeAssistantを駆使して家の電気代をできる限り見える化する方法の考案
harutiro
0
260
Where Should Platform Complexity Live? Lessons from a Cross-Team PR Preview Platform
taiki45
0
110
MCPでネットワーク障害調査を自動化する前に直すべき3つのこと
yama3133
0
380
マネージャーをエスパーにしない マネジメントされる側から始める、働きやすい現場づくり
comi190327
0
520
Kansai WordPress Meetup@大阪『ブロックテーマを作る上で知っておくべきこと
torounit
0
120
セキュリティ専任チームなしで攻撃を先回りするSREが実践したSIEM on Amazon OpenSearch Service
cscengineer
PRO
1
900
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
55
13k
For a Future-Friendly Web
brad_frost
184
11k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
23k
Deep Space Network (abreviated)
tonyrice
0
420
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
490
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
Testing 201, or: Great Expectations
jmmastey
46
8.4k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.5k
Six Lessons from altMBA
skipperchong
29
4.6k
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
Unsuck your backbone
ammeep
672
58k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
570