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
400
Kubernetesのオペレータを Kubernetes知らない人に説明
kanazawa.rb #108のLTスライドです
Satoru Takeuchi
PRO
August 21, 2021
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
KubeConにproposalを送りたい人へのアドバイス
sat
PRO
3
250
俺とキャンプ2
sat
PRO
1
97
俺とキャンプ3
sat
PRO
0
83
データ冗長化のしくみRAID 基礎概念とRAID1編
sat
PRO
2
30
RAIDの実現方法
sat
PRO
2
58
Linux環境のCPU上で10ミリ秒間に起こること
sat
PRO
3
110
HDDへのアクセス速度は位置によって変わる!??
sat
PRO
4
54
ボリュームマネージャLVM
sat
PRO
2
88
Best Practices of Production-Grade Rook/Ceph Cluster
sat
PRO
1
1.9k
Other Decks in Technology
See All in Technology
Hands-on Gemini, the Google DeepMind LLM
meteatamel
1
110
開発生産性大幅アップ!Postman VS Code拡張機能
nagix
2
380
地理空間データ可視化・解析・活用ソリューション Pacific Spatial Solutions (PSS)
pacificspatialsolutions
0
270
ChatworkのSRE部って実は 半分くらいPlatform Engineering部かもしれない
saramune
0
160
KubeCon EU 2024 Recap “Kubernetes Policy Time Machine: Where to Next?”
ryysud
0
220
LayerXにおけるLLMプロダクト開発の今までとこれから
layerx
PRO
1
240
GraphQL 成熟度モデルの紹介と、プロダクトに当てはめた事例 / GraphQL maturity model
mh4gf
7
1.3k
Cracking the KubeCon CfP
inductor
2
250
プロンプトエンジニアリングでがんばらない-Agentic Workflow へ-近藤憲児
kenjikondobai
2
560
「スニダン」開発組織の構造に込めた意図 ~組織作りはパッションや政治ではない!~
rinchsan
3
570
TechFeed Experts Night#27 〜 フロントエンドフレームワーク最前線 (Svelte)
baseballyama
1
510
VS CodeでAWSを操作しよう
smt7174
8
1.7k
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
25
2.3k
It's Worth the Effort
3n
180
27k
What's in a price? How to price your products and services
michaelherold
237
11k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
Build The Right Thing And Hit Your Dates
maggiecrowley
24
2k
Building a Scalable Design System with Sketch
lauravandoore
456
32k
Building Applications with DynamoDB
mza
88
5.6k
4 Signs Your Business is Dying
shpigford
175
21k
The Cost Of JavaScript in 2023
addyosmani
16
3.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
37
2.5k
Facilitating Awesome Meetings
lara
42
5.6k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
659
120k
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