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
Kubernetesのオペレータを Kubernetes知らない人に説明
Search
Satoru Takeuchi
PRO
August 21, 2021
Technology
1
420
Kubernetesのオペレータを Kubernetes知らない人に説明
kanazawa.rb #108のLTスライドです
Satoru Takeuchi
PRO
August 21, 2021
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
会社員しながら本を書いてきた知見の共有
sat
PRO
3
740
デバイスにアクセスするデバイスファイル
sat
PRO
1
31
ファイルシステムのデータを ブロックデバイスへの操作で変更
sat
PRO
1
27
デバイスドライバ
sat
PRO
0
41
マルチスレッドの実現方法 ~カーネルスレッドとユーザスレッド~
sat
PRO
2
94
共有メモリ
sat
PRO
3
63
マルチスレッドプログラム
sat
PRO
3
54
Linuxのブートプロセス initramfs編
sat
PRO
2
72
Linuxのブートプロセス
sat
PRO
6
180
Other Decks in Technology
See All in Technology
Securing your Lambda 101
chillzprezi
0
220
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.2k
MCPを利用して自然言語で3Dプリントしてみよう!
hamadakoji
0
1.4k
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
48
33k
産業機械をElixirで制御する
kikuyuta
0
140
マルチテナント+マルチプロダクト SaaS への AI Agent の組み込み方
kworkdev
PRO
1
210
Classmethod AI Talks(CATs) #22 司会進行スライド(2025.06.12) / classmethod-ai-talks-aka-cats_moderator-slides_vol22_2025-06-12
shinyaa31
0
140
AIエージェントのフレームワークを見るときの個人的注目ポイント
os1ma
1
480
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
17k
Kafka vs. Pulsar: Performance Evaluation by Petabyte-Scale Streaming Platform Providers
lycorptech_jp
PRO
1
350
「どこにある?」の解決。生成AI(RAG)で効率化するガバメントクラウド運用
toru_kubota
2
170
メルカリにおけるデータアナリティクス AI エージェント「Socrates」と ADK 活用事例
na0
16
8.7k
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
14
1.5k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Raft: Consensus for Rubyists
vanstee
138
7k
The Pragmatic Product Professional
lauravandoore
35
6.7k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
The Cult of Friendly URLs
andyhume
79
6.4k
Become a Pro
speakerdeck
PRO
28
5.4k
Fireside Chat
paigeccino
37
3.5k
What's in a price? How to price your products and services
michaelherold
245
12k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
4
120
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Transcript
Kubernetesのオペレータを Kubernetes知らない人に説明 Aug. 21th, 2021 kanazawa.rb #108 LT大会 Satoru Takeuchi
twitter: satoru_takeuchi 1
Kubernetesとは • 分散アプリ実行基盤 • 管理者はマニフェストと呼ばれるYAMLを書いて以下コマンド実行 ◦ kubectl apply app.yaml •
K8sはマニフェストの状態になるようにアプリを維持(後述) 2
従来型アプリ実行基盤との違い • やりたいこと ◦ nginxを2多重で動かす • 誰が何をするか ◦ 従来型: 手続き的の管理
▪ nginxを2つ動かす ▪ 1つ落ちたら人間が1つ再起動 • ansibleとかがやってたりもする ◦ Kubernetes: 宣言的の管理 ▪ 右のマニフェストをapply ▪ K8sが2個nginxを立ち上げる ▪ 1個落ちたらK8sが自動的に1つ再起動 • 宣言型のほうは”使うのは”楽 3 apiVersion: apps/v1 kind: ReplicaSet metadata: name: nginx spec: replicas: 2 template: spec: containers: - name: nginx image: nginx:1.14.2
Kubernetesのリソース • 個々のアプリはPodとよばれるコンテナのかたまりを示すリソースで定義 • アプリの多重度を維持するのがReplicasetリソース(*1) ◦ KubernetesがReplicaSetリソースのreplicasフィールドで定義された数、 Podリソースを作る ◦ KubernetesはPodリソースの数だけアプリを実行する
• PodやReplicaSetはK8sがデフォルトで提供している • 複雑なアプリの場合はReplicaSetやPodだけでは辛い 4 *1) 普通はDeploymentリソースを使うが説明は割愛
Custom Resource • 複雑なアプリ用に独自リソース(Custom Resource, CR)を作れる ◦ CRの定義をCustom Resource Definition(CRD)と呼ぶ
• 以下はRookという分散ストレージCeph用のCR ◦ storage以下でクラスタに組み込むディスクを定義 ◦ 全ノードの(使われていない)全ディスクをクラスに組み込む 5 apiVersion: ceph.rook.io/v1 kind: CephCluster spec: cephVersion: image: quay.io/ceph/ceph:v16.2.5 storage: useAllNodes: true useAllDevices: true
controllerとoperator • CRを操作するためのプログラム • CRDとcontrollerを合わせたものをoperatorという ◦ operator開発者が作る • 以下のように動作する ◦
CRに変化(生成、変更)があったときなど、状態に変化があったときに呼び出される ◦ あるべき姿との差分にしたがって必要な処理をする • たとえば前ページのCephCluster CRなら… ◦ K8sクラスタにノードを追加 ◦ CephClusterリソースを扱うRookのcontrollerが動く ◦ クラスタに登録されていない (新しいノード内の)ディスクがあることを検出 ◦ クラスタに新しいディスクを登録 6
operatorつらい話 • operatorのおかげで人間は楽をできる • ただし • operatorを実装する開発者はつらい ◦ 「差分を検出してあるべき姿にする」プログラムは書くのが大変 ◦
様々な泥臭いハックが必要 • 問題が出たときは結局ユーザもつらい ◦ トラブル解決のために operator、管理対象プログラムについての知見が必要 • 続きはWebで! ◦ オペレータの実装はつらい ◦ https://zenn.dev/satoru_takeuchi/articles/d8c37a037308d8 7