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
Chaos Engineering with Chaos Mesh
Search
oracle4engineer
PRO
July 20, 2022
Technology
1.1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Chaos Engineering with Chaos Mesh
Chaos Night #1 - カオスエンジニアリングの夕べ
で使用した資料です。
oracle4engineer
PRO
July 20, 2022
More Decks by oracle4engineer
See All by oracle4engineer
Kubernetesで作るLLM推論基盤(OCHaCafe Season 12 #1)
oracle4engineer
PRO
1
40
【Oracle AI Spotlight ウェビナー】AI活用を支えるデータ基盤とは ― いま押さえておきたい Oracle AI Database 26ai の注目機能
oracle4engineer
PRO
1
71
Deep Data Security 機能解説
oracle4engineer
PRO
2
800
kagent で Kubernetes 運用を考える
oracle4engineer
PRO
1
450
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
17
120k
Oracle Cloud Infrastructure:2026年9月度サービス・アップデート
oracle4engineer
PRO
1
320
[2026 Oracle Technical Deep Dive] Apache Iceberg × Oracle AI Database -Oracle Autonomous AI Lakehouseが実現するAI時代のデータ基盤- (2026年9月17日開催)
oracle4engineer
PRO
0
160
[2026 Oracle Technical Deep Dive] エンタープライズAIエージェントを支えるOCIソリューション。ラインナップと特徴を理解しよう! (2026年9月17日開催)
oracle4engineer
PRO
0
790
[2026 Oracle Technical Deep Dive] AI時代のデータベース基盤をどう選ぶ? Exadata Database Serviceの選択肢と使い分け (2026年9月17日開催)
oracle4engineer
PRO
0
260
Other Decks in Technology
See All in Technology
Conditional PED-ANOVA: Hyperparameter Importance in Hierarchical & Dynamic Search Spaces
pfn
PRO
0
110
OptunaHub: ブラックボックス最適化のためのプラットフォーム
pfn
PRO
0
100
JAWSUG TOHOKU 青森支部 「LoGoチャット」のAWS移行で 乗り越えたこと
taketakekaho
0
230
使いこなすために知っておきたい Azure SRE Agent アンチパターン
torumakabe
2
490
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
5
3.7k
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
0
130
Getting Started with Google Antigravity
glaforge
0
260
AIは「聞けば答える」から「任せると自分で進める」へ - JACTIMペナン地域部会・ペナン三水会講演
knishioka
0
110
Claude Code本は、どのように執筆チームで書かれたか
oikon48
1
370
Classmethod Company Deck
satoshi7
0
190
宣言型部分更新は何を解決しどこへ向かうのか
shuta13
1
390
hackers_champloo_2026_tidb
makocchi
0
150
Featured
See All Featured
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
750
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
My Coaching Mixtape
mlcsv
0
350
Marketing to machines
jonoalderson
1
5.9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
260
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
560
Automating Front-end Workflow
addyosmani
1369
210k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
780
Deep Space Network (abreviated)
tonyrice
0
370
So, you think you're a good person
axbom
PRO
2
2.2k
Transcript
Chaos Engineering w/ Chaos Mesh Chaos Night #1 Shuhei Kawamura
Cloud Solution Engineer Solutions Architect, Oracle Corporation Japan July 20, 2022
Copyright © 2022, Oracle and/or its affiliates 2 • 日本オラクル株式会社
• ソリューション・アーキテクト本部 • OCHaCafe メンバー • 担当領域 • Cloud Native, App Dev • Data Platform(Spark周り) • AI Services • Search Service with OpenSearch • (趣味) 認証・認可関連 • 趣味 • サウナ、料理、音楽、スノーボード 川村 修平 (Shuhei Kawamura) @shukawam Twitter/GitHub/Qiita
Copyright © 2022, Oracle and/or its affiliates 3 • Cloud
Native な環境(Kubernetes)用に設計されたカオスエンジニアリングプラットフォーム • https://chaos-mesh.org/ • 最新版は、v2.2.2 (※ 2022/07 現在) • Kubernertes v1.15 ~ 1.23 が動作対象 • https://chaos-mesh.org/docs/supported-releases/#how-we-determine-supported-kubernetes-versions • ユーザーフレンドリーな UI を提供 • 実験の作成や進行状況のモニター機能 • 豊富な実験タイプを CRD(Custom Resource Definitions) として提供 • Tool Integration • Grafana, GitHub Actions • 安全に実験を行うための機能をサポート • Dashboard に対する Kubernetes の RBAC 機能を用いた権限制御(Manager/Viewer) • 実験の対象範囲を制御する namespace でのフィルタリング Chaos Mesh Open Source Cloud-Native Chaos Engineering platform $ kubectl annotate ns $NAMESPACE chaos-mesh.org/inject=enabled
Copyright © 2022, Oracle and/or its affiliates 4 fault types
description PodChaos Pod の障害をシミュレート(failure, kill, container kill) NetworkChaos Pod 間の Network の障害をシミュレート(partition, loss, delay, duplicate, corrupt, bandwidth) DNSChaos DNS 障害をシミュレート(error, random) HTTPChaos HTTP 通信の障害をシミュレート(abort, delay, replace, patch) StressChaos CPU, RAM の競合をシミュレート IOChaos I/O 障害をシミュレート(latency, fault, modify) TimeChaos システム時間を変更し、summer time やその他時間に関連するイベントへ の適応をシミュレート KernelChaos カーネル障害をシミュレート(メモリ割り当ての例外、etc.) JVMChaos JVM の障害をシミュレート(exception, gc, latency, stress, etc.) AWSChaos AWS の障害をシミュレート(EC2 stop/restart, detach volume) GCPChaos GCP の障害をシミュレート(GCE stop/restart, disk loss) AzureChaos Azure の障害をシミュレート(VM stop/restart, disk detach) Fault Injection 豊富な種類の障害タイプを CRD(Custom Resource Definitions) として提供
Copyright © 2022, Oracle and/or its affiliates 5 • 実験の作成方法
• Web UI(Chaos Dashboard) から作成する • 簡易的な検証用途 • Web UI から入力した情報をもとに実験の定義(Manifest)を取得する • Manifest を書いて kubectl apply する • おすすめはこちら • 実行方法 • 一つの実験を一回だけ実行する • 一つの実験をスケジュール実行する • 一つ以上の実験をワークフローとして実行する 実験の作成方法と実行方法
Copyright © 2022, Oracle and/or its affiliates 6 実行方法 #1
一つの実験を一回だけ実行する kind: PodChaos # fault types(PodChaos, NetworkChaos, IOChaos, etc.) apiVersion: chaos-mesh.org/v1alpha1 metadata: namespace: chaos-testing name: pod-kill spec: selector: # 実験対象の絞り込み namespaces: - k8s-helidon-app labelSelectors: app: k8s-helidon-app mode: one # 実行モード(one/all/fixed/fixed-percent/random-max-percent) action: pod-kill # action gracePeriod: 0
Copyright © 2022, Oracle and/or its affiliates 7 実行方法 #2
一つの実験をスケジュール実行する kind: Schedule # Schedule 実行 apiVersion: chaos-mesh.org/v1alpha1 metadata: namespace: chaos-testing name: pod-kill-scheduled spec: schedule: 30 19 * * * # cron concurrencyPolicy: Forbid # 実験の同時実行許可(Allow/Forbid) historyLimit: 1 # 履歴の保持件数 type: PodChaos # fault types(PodChaos, NetworkChaos, IOChaos, etc.) podChaos: selector: # 実験対象の Pod を絞り込み namespaces: - k8s-helidon-app labelSelectors: app: k8s-helidon-app mode: one action: pod-kill gracePeriod: 0
Copyright © 2022, Oracle and/or its affiliates 8 Chaos Mesh
では、カオス実験のワークフローを作成するために、以下の機能を持つ 実行方法 #3 一つ以上の実験をワークフローとして実行する features description 直列(Serial)実行 複数の実験、タスクを順番に実行する 並列(Parallel)実行 複数の実験、タスクを並列に実行する(複雑な条件のシミュレートに有効) Custom Task 任意のコンテナイメージを用いて独自定義の処理を実行する。実行結果による条件分岐も可能 Suspend 待ち時間を発生させる Status Check ステータスの確認を行うタスク(HTTPのリクエストを発行し、ステータスコードを確認する) e.g. 定常状態の測定、イベントの注入、実験中の状態の測定を行い、完了後の通知を自動的に行うワークフロー Task Task HTTP Request Incoming Webhook PodChaos
Copyright © 2022, Oracle and/or its affiliates 9 実行方法 #3
一つ以上の実験をワークフローとして実行する apiVersion: chaos-mesh.org/v1alpha1 kind: Workflow # ワークフロー実行 metadata: name: pod-kill-workflow namespace: chaos-testing spec: entry: entry # ワークフローのエントリーポイント templates: - name: entry templateType: Serial # Serial 実行 deadline: 3m children: # 上から順番に実行される - k6-load-test-in-steady-state - event-injection
Copyright © 2022, Oracle and/or its affiliates 10 実行方法 #3
一つ以上の実験をワークフローとして実行する - name: k6-load-test-in-steady-state templateType: Task task: container: name: k6-load-test image: grafana/k6 command: # K6 を用いて、疑似トラフィックを再現 - k6 - run - "--out" - "influxdb=http://influxdb.shukawam.com/chaosjp" - "--vus" - "10" - "--duration" - "30s" - "script.js" volumeMounts: - mountPath: /home/k6 name: k6-script volumes: - name: k6-script configMap: name: k6-configmap import http from "k6/http"; import { check, sleep } from "k6"; export default function () { const res = http.get("http://helidon.shukawam.com/greet"); check(res, { "is status code 200": (r) => r.status === 200, }); sleep(1); }
Copyright © 2022, Oracle and/or its affiliates 11 実行方法 #3
一つ以上の実験をワークフローとして実行する - name: event-injection templateType: Parallel # Parallel 実行 deadline: 2m children: # 並列に実行される(Pod を kill しながら疑似トラフィックを流す) - pod-kill-random - k6-load-test-in-chaos-state - name: pod-kill-random templateType: PodChaos deadline: 1m podChaos: selector: namespaces: - k8s-helidon-app labelSelectors: app: k8s-helidon-app mode: one action: pod-kill
Copyright © 2022, Oracle and/or its affiliates 12 実行方法 #3
一つ以上の実験をワークフローとして実行する - name: k6-load-test-in-chaos-state templateType: Task task: container: name: k6-load-test image: grafana/k6 command: - k6 - run - "--out" - "influxdb=http://influxdb.shukawam.com/chaosjp" - "--vus" - "10" - "--duration" - "30s" - "script.js" volumeMounts: - mountPath: /home/k6 name: k6-script volumes: - name: k6-script configMap: name: k6-configmap import http from "k6/http"; import { check, sleep } from "k6"; export default function () { const res = http.get("http://helidon.shukawam.com/greet"); check(res, { "is status code 200": (r) => r.status === 200, }); sleep(1); }
Copyright © 2022, Oracle and/or its affiliates 13 カオス実験の 4
つのプロセス: 1. 定常状態を定義する • “app: k8s-helidon-app” のラベルが付いたPod がすべて Status: Running な状態で稼働している 2. 仮説を立てる • 任意の Pod を kill しても K8s のセルフヒーリングに より元の状態に戻る 3. 現実世界のイベントを反映する変数を導入する • Chaos Mesh(PodChaos) を用いて、ランダムに Pod を一つ kill してみる 4. 仮説を検証する Demo: Chaos Mesh Load Balancer OKE Inject PodChaos … $ kubectl get pods -w NAME READY STATUS RESTARTS AGE k8s-helidon-app-777b65c7-85n2v 1/1 Running 0 39m k8s-helidon-app-777b65c7-tr78g 1/1 Running 0 39m k8s-helidon-app-777b65c7-v64vb 1/1 Running 0 39m k8s-helidon-app-777b65c7-v64vb 1/1 Terminating 0 49m k8s-helidon-app-777b65c7-v64vb 1/1 Terminating 0 49m k8s-helidon-app-777b65c7-fvxlc 0/1 Pending 0 0s k8s-helidon-app-777b65c7-fvxlc 0/1 Pending 0 0s k8s-helidon-app-777b65c7-fvxlc 0/1 ContainerCreating 0 0s k8s-helidon-app-777b65c7-fvxlc 0/1 Running 0 1s k8s-helidon-app-777b65c7-fvxlc 1/1 Running 0 35s
Copyright © 2022, Oracle and/or its affiliates 14 その他の話はこちらから! 参考
https://speakerdeck.com/oracle4engineer/how-to-chaos-engineering
Copyright © 2022, Oracle and/or its affiliates 15 • Chaos
Engineering は、実験なので計画を立てたうえでやってみることが重要 • Chaos Mesh • Open Source Cloud-Native Chaos Engineering platform • リッチな UI、豊富な fault types、様々な Tool Integration、拡張性 • 安全に実験を行う仕組みも複数あり まとめ
Copyright © 2022, Oracle and/or its affiliates 16 • 開発者・エンジニアにお届けするテクニカ
ルな勉強会です • クラウドネイティブな時代に身に着けてお くべきテクノロジーを深掘りしていきます • テーマはオープン/デファクト・スタンダード を基準に選定し、Oracle固有な話題に はならないように、且つ学んだ知識は広く 応用が利くように、配慮しています Season 5 • Kubernetes Operator 超入門 • Kubernetes で並列分散処理 • Kubernetes のセキュリティ • 挑戦 TypeScript • 実験!カオスエンジニアリング • MLOps を始めよう! Season 6 is coming soon!
Copyright © 2022, Oracle and/or its affiliates 17 #OCHaCafe History
Season 1 • コンテナを使った CI/CD • Microservices の運用・管理 • Microservices な Java アプリケーション • Hyperledger Facric なアプリケーション設計入門ガイド • 避けては通れない!認証・認可 • 人にもマシンにもやさしい API のエコシステム Season 2 • これからはじめる!Kubernetes 基礎 • 一体何モノなの?GraalVM 入門 • Serverless な世界をのぞいてみよう! • Cloud Native 時代のモダン Java の世界 • 変幻自在♪ 広がる Kubernetes のエコシステム • Cloud Native × Streaming はじめの一歩 Season 3 • Cloud Native 流のストレージ管理 • サービス間通信のトレンド – gRPC & GraphQL 入門 • Kubernetes クラスタの管理術 • 挑戦!Java で Reactive プログラミング • 明解!NoSQL の勘所 • コンテナ・ランタイムの未来 Season 4 • 生体認証のイロハ • Kubernetes のネットワーク • CI/CD 最新事情 • マイクロサービスの認証・認可と JWT • Kubernetes のオートスケーリング • Observability 再入門 Season 5 • Kubernetes Operator 超入門 • Kubernetes で並列分散処理 • Kubernetes のセキュリティ • 挑戦!TypeScript • 実験!カオスエンジニアリング • MLOps を始めよう! OCHaCafe Premium (Oracle フォーカス spin-off) • Oracle Cloud で考える高可用性アーキテクチャ • クラウド・アプリケーションのパフォーマンス • Oracle Cloud Infrastructure Cloud Native 2021 • マイクロサービスとデータマネジメント • クラウドで実践する Enterprise Java アーカイブサイト >> https://developer.oracle.com/jp/cloud-hangout-cafe/
Thank you Copyright © 2022, Oracle and/or its affiliates 18
None