SlideShare a Scribd company logo
Rook 基礎・バージョンアップ
@rev4t
Takashi Sogabe
2020年03月27日
今回お話しすること
•Rookの基本的な使い方
•Ceph の利用を想定
•バージョンアップ方法
•Rook Operator
•Ceph
発表者紹介
•Takashi Sogabe
• @rev4t
•OpenStack や Ceph の運用をやっています
•発表内容の元ネタ
• https://bit.ly/2QPeNPf
Rook Basics
k8s で Storage を使うときの課題
•外部ストレージが必要
•EBS等の、クラウドサービスを使う
• k8s node 障害時、 failover に時間を要する
•自前でアプライアンスを用意する
• ストレージシステムを別途運用するコストが大きい
•ベンダ・ロックイン
• ブラックボックスが相手だと、何かあっても自分たちで解決
することはできない
Rook で解決できること
•k8s 上で Storage Operation を実現
•Day1, Day2 Operation の自動化
• Bootstrap
• Deploy
• Configure
• Upgrade
•Storage Provisioning
• PVC
Rook とは?
•Open Source (Apache 2.0)
•CNCF のプロジェクト
•Operator + Custom Resource にて k8s の機能を拡張
•沢山の Storage システムに対応したフレームワーク
Storage Providers
Project Status
Ceph Stable
EdgeFS Stable
CockroachDB Alpha
Cassandra Alpha
NFS Alpha
YugabyteDB Alpha
Minio Alpha
2020年3月現在 (Rook v1.3)
Rook Architecture
•Rook Operator
•人間のオペレータに代わって、Ceph 等のデータを
持った分散システムのデプロイ・管理を実施する
•Rook Discover
•ストレージノード (k8s worker node)で動作し、ス
トレージを自動検出する
Version Up: Overview
Rook Version Up
•Version Up の対象は、2つあります
•Rook
•Ex) rook v1.1 -> v1.2
•Storage Backend
• Ex) Ceph 14.0.4 -> 14.0.5
Version Up Strategy (1)
• Rook Control Plane
• Release Note 等を確認した上で、修正するべき不具合等があれば、
Version Up を実施します
• Major Version Up
• ドキュメントに従い Version Up すれば、大きな問題はおこらないはずですが、
必ず事前検証をしておきましょう
• Version Up 中、一時的にストレージが利用できない状態になるのでご注意
ください
• ceph-mon, ceph-osd の container restart が発生します
• Minor Version Up
• Minor version up (v1.2.x -> v1.2.y) であれば、ceph-mon /ceph-osd の
container restart が発生しないパターンもあるため、影響は軽微になります
Version Up Strategy (2)
•Ceph
•事前テスト等を実施した上で本番環境に Roll Out
しましょう
•過去に、最新版 Ceph に Version Up することでサー
ビス影響が出そうな不具合がしばしば発生しています
•ceph-mon, ceph-osd の再起動が one-by-one で実
施されるため、I/O の一時的な性能低下・遅延が発
生します
• 一時的なパフォーマンス低下に耐えられる時間帯等で実
施しましょう
Version Up: Rook Control Plane
•Rook の公式ドキュメントに従って作業を実施
します
• https://rook.io/docs/rook/v1.2/ceph-upgrade.html
• 公式リリースバージョンの使用が前提です
• master ブランチからの Version Up については unsupported になります
Rook Version Up (v1.1 -> v1.2)
Step 0-1: Ceph Health Verification
export ROOK_NAMESPACE=rook-ceph
kubectl -n $ROOK_NAMESPACE get pods
TOOLS_POD=$(kubectl -n $ROOK_NAMESPACE get pod -l "app=rook-ceph-tools" -o
jsonpath='{.items[0].metadata.name}')
kubectl -n $ROOK_NAMESPACE exec -it $TOOLS_POD -- ceph status
• Version Up 前に、Ceph がクラスタとして正常に稼働していることを確
認しておきます
Step 0-2: Ceph Health Verification
kubectl -n $ROOK_NAMESPACE exec -it $TOOLS_POD -- ceph status
cluster:
id: 3cce2f74-a60c-4420-b88e-61b2b3f143ae
health: HEALTH_OK
services:
mon: 3 daemons, quorum a,b,c (age 43m)
mgr: a(active, since 42m)
osd: 9 osds: 9 up (since 39m), 9 in (since 39m)
data:
pools: 1 pools, 128 pgs
objects: 14 objects, 7.0 MiB
usage: 9.0 GiB used, 162 GiB / 171 GiB avail
pgs: 19.531% pgs unknown
3.906% pgs not active
98 active+clean
25 unknown
5 peering
Step 0-3: k8s Health Verification
POD_NAME=$(kubectl -n $ROOK_NAMESPACE get pod -o custom-columns=name:.metadata.name --no-
headers | grep rook-ceph-mon-b)
# Container の version を確認
kubectl -n $ROOK_NAMESPACE get pod ${POD_NAME} -o jsonpath='{.spec.containers[0].image}‘
ceph/ceph:v14.2.4-20190917
kubectl -n $ROOK_NAMESPACE get deployments -o jsonpath='{range .items[*]}{.metadata.name}{"
¥treq/upd/avl: "}{.spec.replicas}{"/"}{.status.updatedReplicas}{"/"}{.status.readyReplicas}{"
¥trook-version="}{.metadata.labels.rook-version}{"¥n"}{end}‘
kubectl -n $ROOK_NAMESPACE get jobs -o jsonpath='{range .items[*]}{.metadata.name}{"
¥tsucceeded: "}{.status.succeeded}{" ¥trook-version="}{.metadata.labels.rook-
version}{"¥n"}{end}'
• Version Up 前に、Rook の Control plane が正常に稼働していることを
確認します
Step 0-4: k8s Health Verification
kubectl -n $ROOK_NAMESPACE get deployments -o jsonpath='{range .items[*]}{.metadata.name}{" ¥treq/upd/avl:
"}{.spec.replicas}{"/"}{.status.updatedReplicas}{"/"}{.status.readyReplicas}{" ¥trook-
version="}{.metadata.labels.rook-version}{"¥n"}{end}'
csi-cephfsplugin-provisioner req/upd/avl: 2/2/2 rook-version=
csi-rbdplugin-provisioner req/upd/avl: 2/2/2 rook-version=
rook-ceph-mgr-a req/upd/avl: 1/1/1 rook-version=v1.1.9
rook-ceph-mon-a req/upd/avl: 1/1/1 rook-version=v1.1.9
rook-ceph-mon-b req/upd/avl: 1/1/1 rook-version=v1.1.9
rook-ceph-mon-c req/upd/avl: 1/1/1 rook-version=v1.1.9
rook-ceph-operator req/upd/avl: 1/1/1 rook-version=
rook-ceph-osd-0 req/upd/avl: 1/1/1 rook-version=v1.1.9
rook-ceph-osd-1 req/upd/avl: 1/1/1 rook-version=v1.1.9
rook-ceph-osd-2 req/upd/avl: 1/1/1 rook-version=v1.1.9
rook-ceph-osd-3 req/upd/avl: 1/1/1 rook-version=v1.1.9
rook-ceph-osd-4 req/upd/avl: 1/1/1 rook-version=v1.1.9
rook-ceph-osd-5 req/upd/avl: 1/1/1 rook-version=v1.1.9
rook-ceph-osd-6 req/upd/avl: 1/1/1 rook-version=v1.1.9
rook-ceph-osd-7 req/upd/avl: 1/1/1 rook-version=v1.1.9
rook-ceph-osd-8 req/upd/avl: 1/1/1 rook-version=v1.1.9
rook-ceph-tools req/upd/avl: 1/1/1 rook-version=
Step 0-5: k8s Health Verification
kubectl -n $ROOK_NAMESPACE get jobs -o jsonpath='{range .items[*]}{.metadata.name}{" ¥tsucceeded:
"}{.status.succeeded}{" ¥trook-version="}{.metadata.labels.rook-version}{"¥n"}{end}'
rook-ceph-osd-prepare-k8s-node1 succeeded: 1 rook-version=v1.1.9
rook-ceph-osd-prepare-k8s-node2 succeeded: 1 rook-version=v1.1.9
rook-ceph-osd-prepare-k8s-node3 succeeded: 1 rook-version=v1.1.9
Step 1: Update the RBAC and CRDs
kubectl apply -f upgrade-from-v1.1-apply.yaml
• Operator の Upgrade に必要な、Custom Resource Definition 及び
RBAC の更新を実施します
Step 2: CSI upgrade pre-requisites
kubectl -n $ROOK_SYSTEM_NAMESPACE edit deploy rook-ceph-operator
• fuse または rbd-nbd を使っている場合は、CSI driver 再起動時に
Pod の mount が外れてしまいます
• Cephfs plugin 及び rbd plugin の update strategy を OnDelete に変
更することで、問題を回避します
Step 3: Update the Rook Operator
kubectl -n $ROOK_SYSTEM_NAMESPACE set image deploy/rook-ceph-operator rook-ceph-
operator=rook/ceph:v1.2.5
• Rook ceph operator の container image version を v1.1.9 -> v1.2.5
に変更します
Step 4-1: Wait for the upgrade to complete
watch --exec kubectl -n $ROOK_NAMESPACE get deployments -l
rook_cluster=$ROOK_NAMESPACE -o jsonpath='{range .items[*]}{.metadata.name}{"
¥treq/upd/avl:
"}{.spec.replicas}{"/"}{.status.updatedReplicas}{"/"}{.status.readyReplicas}{"
¥trook-version="}{.metadata.labels.rook-version}{"¥n"}{end}'
• Rook ceph operator の container image version を v1.1.9 -> v1.2.5
に変更します
Step 4-2: Wait for the upgrade to complete
rook-ceph-mgr-a req/upd/avl: 1/1/1 rook-version=v1.2.5
rook-ceph-mon-a req/upd/avl: 1/1/1 rook-version=v1.2.5
rook-ceph-mon-b req/upd/avl: 1/1/1 rook-version=v1.2.5
rook-ceph-mon-c req/upd/avl: 1/1/1 rook-version=v1.2.5
rook-ceph-osd-0 req/upd/avl: 1/1/1 rook-version=v1.2.5
rook-ceph-osd-1 req/upd/avl: 1/1/1 rook-version=v1.2.5
rook-ceph-osd-2 req/upd/avl: 1/1/1 rook-version=v1.2.5
rook-ceph-osd-3 req/upd/avl: 1/1/1 rook-version=v1.2.5
rook-ceph-osd-4 req/upd/avl: 1/1/1 rook-version=v1.2.5
rook-ceph-osd-5 req/upd/avl: 1/1/1 rook-version=v1.2.5
rook-ceph-osd-6 req/upd/avl: 1/1/1 rook-version=v1.2.5
rook-ceph-osd-7 req/upd/avl: 1/1/1 rook-version=v1.2.5
rook-ceph-osd-8 req/upd/avl: 1/1/1 rook-version=v1.2.5
Step 5: Verify the updated cluster
kubectl -n $ROOK_SYSTEM_NAMESPACE get pod -o
jsonpath='{range .items[*]}{.metadata.name}{"¥n¥t"}{.status.phase}{"¥t¥t"}{.spec.containers[0].image}{"¥t"}{.spec.initContaine
rs[0]}{"¥n"}{end}' && ¥kubectl -n $ROOK_NAMESPACE get pod -o
jsonpath='{range .items[*]}{.metadata.name}{"¥n¥t"}{.status.phase}{"¥t¥t"}{.spec.containers[0].image}{"¥t"}{.spec.initContaine
rs[0].image}{"¥n"}{end}‘
…
rook-ceph-operator-6b8474c69c-qt9tl
Running rook/ceph:v1.2.5
rook-ceph-osd-prepare-k8s-node1-x6tpr
Succeeded ceph/ceph:v14.2.4-20190917 rook/ceph:v1.2.5
rook-ceph-osd-prepare-k8s-node2-72h27
Succeeded ceph/ceph:v14.2.4-20190917 rook/ceph:v1.2.5
rook-ceph-osd-prepare-k8s-node3-rql6v
Succeeded ceph/ceph:v14.2.4-20190917 rook/ceph:v1.2.5
rook-discover-j4pn7
Running rook/ceph:v1.2.5
rook-discover-j4xgj
Running rook/ceph:v1.2.5
rook-discover-k8cc7
Running rook/ceph:v1.2.5
• Rook の control plane が v1.2.5 になっていることを確認します
Step 6: CSI Manual Update (optional)
•CSI driver 再起動時に mount が外れる問題
に該当する場合は、CSI driver の手動 version
up を実施します
• Application Pods の drain を各 worker node にて実施
• CSI driver pod の delete を実施
• Delete 後に作成される新しい Pod は、version up されています
Step 7: Update Rook-Ceph custom resource
definitions
kubectl apply -f upgrade-from-v1.1-crds.yaml
• Version up 全ての Step 完了後に、Custom Resource Definition を
更新します
Rook Version Up (v1.2.x -> v1.2.y)
Step 1: Patch Release Upgrades
kubectl -n rook-ceph set image deploy/rook-ceph-operator rook-ceph-
operator=rook/ceph:v1.2.5
• Ceph operator の Custom Resource について、image のバージョンを
変更します
• 移行先の Version 番号によって、影響を受ける Pod が異なります
• 事前に、実際に使用する from, to の version を用いたテストを実
施しておくことをお勧めします
Affected components (v1.2.x -> v1.2.y)
From -> To CSI Driver ceph-mon ceph-osd ceph-mgr
V1.2.x -> v1.2.0 Affected - Affected -
v1.2.0 -> v1.2.1 - - Affected -
v1.2.1 -> v1.2.2 Affected - Affected -
v1.2.2 -> v1.2.3 Affected - - -
v1.2.3 -> v1.2.4 - - - -
v1.2.4 -> v1.2.5 Affected - - -
• 対象Deployment / DaemonSet の PodTemplate が変更されると、当
該Pod の delete / create が発生します
Ceph Version Up (v14.2.4 -> v14.2.7)
Step 1: Update the main Ceph daemons
ROOK_NAMESPACE=rook-ceph
NEW_CEPH_IMAGE=ceph/ceph:v14.2.7
CLUSTER_NAME=$ROOK_NAMESPACE
kubectl -n $ROOK_NAMESPACE patch CephCluster $CLUSTER_NAME --type=merge -p
"{¥"spec¥": {¥"cephVersion¥": {¥"image¥": ¥"$NEW_CEPH_IMAGE¥"}}}"
• Ceph cluster の Custom Resource について、image のバージョンを変
更します
• Update に必要な実際の処理については、Rook operator が自動的
に実施します
Step 2-1: Wait for the daemon pod updates to complete
# 各Podの update 状況を確認します
watch --exec kubectl -n $ROOK_NAMESPACE get deployments -l rook_cluster=$ROOK_NAMESPACE -o
jsonpath='{range .items[*]}{.metadata.name}{" ¥treq/upd/avl:
"}{.spec.replicas}{"/"}{.status.updatedReplicas}{"/"}{.status.readyReplicas}{" ¥tceph-
version="}{.metadata.labels.ceph-version}{"¥n"}{end}‘
# 全ての Pod について、update が完了したことを確認します
kubectl -n $ROOK_NAMESPACE get deployment -l rook_cluster=$ROOK_NAMESPACE -o
jsonpath='{range .items[*]}{"ceph-version="}{.metadata.labels.ceph-
version}{"¥n"}{end}' | sort | uniq
• Update 処理が完了するのを待ちます
• 上記コマンドを実行することで、現在の status を確認できます
Step 2-2: Wait for the daemon pod updates to
complete
# Rook operator 側の稼働状況をリアルタイムに確認します
ROOK_OPERATOR_POD=$(kubectl -n rook-ceph get pod -l "app=rook-ceph-operator" -o
jsonpath='{.items[0].metadata.name}')
kubectl -n rook-ceph logs -f $ROOK_OPERATOR_POD
• Rook operator の稼働状況をリアルタイムに確認することで、進捗状
況を詳細に把握することができます
Step 3: Verify the updated cluster
TOOLS_POD=$(kubectl -n $ROOK_NAMESPACE get pod -l "app=rook-ceph-tools" -o
jsonpath='{.items[0].metadata.name}')kubectl -n $ROOK_NAMESPACE exec -it $TOOLS_POD
-- ceph status
cluster:
id: 3cce2f74-a60c-4420-b88e-61b2b3f143ae
health: HEALTH_OK
…
• Ceph cluster が正常に稼働していることを確認します
External Cluster
Rook Ceph with External Cluster (1)
• 既存の Ceph Cluster に対して、Rook を用いた k8s との連携ができます
• メリット
• CSI Driver の運用管理のみを k8s で実施する形になるため、k8s 側の運用コス
トを下げつつ責任分界点をキッチリと分けられます
• Rook Version Up の際に Ceph Cluster に与えるサービス影響を完全に排除で
きます
• k8s networking による性能低下の影響を受けません
• デメリット
• Rook のほかに Ceph のデプロイツールを導入する必要があります
• ただし、Ceph 自体が強力な自律システムであるため、オペレータが障害時に介入する
必要はありません
• ceph-mon のノード数が障害等の影響で減少した際は、別途デプロイツールを走らせ
る必要があります
Rook Ceph with External Cluster (2)
•Rook + ceph-ansible (container deployment)
• Ceph のデプロイについては、ceph-ansible を用います
• ceph-mon, ceph-osd の配置を自由に決められます
• k8s worker node 上に配置
• k8s クラスタとは独立したノードに配置
• crush mapping や block device mapping に k8s を介在させる必要がないため、運用がシンプ
ルになります
• ceph-ansible 自体が agent 不要でシンプルなため、agent 起因で Ceph クラスタに
影響を与える可能性がありません
Summary
Summary: Rook Version Up (1)
•長期的な運用の観点では、対象の Storage
Backend だけでなく、Rook Operator 自体の
Version Up が必要になる
•Minor Version Up は作業コスト・リスクは低いものの、
Major Version Up についてはサービスへの影響を伴う
作業が発生する
Summary: Rook Version Up (2)
•Ceph の Version Up については、煩雑な作業
を Rook Operator が引き受けてくれるため、と
ても便利
• ただし、リリース直後の Ceph には致命的な Known Issues が
含まれている可能性もあるため、十分な事前検証が必要
Summary: Rook Version Up (3)
•K8s 側の運用をシンプルにしたい場合は..
•ceph-ansible + Rook external cluster
• Ceph クラスタの管理については ceph-ansible を用いる
• Rook は external cluster の形でCeph を使用する
• メリット
• Rook Operator の Version Up に伴う Ceph クラスタへのサービス影響を排除で
きる
• デメリット
• 2つのデプロイシステムを管理する必要がある
• ceph-mon が worker ノード障害等で減少した際は、手動で ceph-ansible コ
マンドを実行してノード数を維持させる必要がある

More Related Content

PPTX
Ceph アーキテクチャ概説
Emma Haruka Iwao
 
PDF
【メモ】一般的に設計書に定義される項目例
Hirokazu Yatsunami
 
PDF
DockerでWordPressサイトを開発してみよう
mookjp
 
PDF
OpenStack超入門シリーズ Novaのディスク周りあれこれ
Toru Makabe
 
PDF
MQTTとAMQPと.NET
terurou
 
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
 
PDF
Babelfish Compatibility
Noriyoshi Shinoda
 
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
Ceph アーキテクチャ概説
Emma Haruka Iwao
 
【メモ】一般的に設計書に定義される項目例
Hirokazu Yatsunami
 
DockerでWordPressサイトを開発してみよう
mookjp
 
OpenStack超入門シリーズ Novaのディスク周りあれこれ
Toru Makabe
 
MQTTとAMQPと.NET
terurou
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
 
Babelfish Compatibility
Noriyoshi Shinoda
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 

What's hot (20)

PPTX
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3
オラクルエンジニア通信
 
PDF
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
NTT DATA Technology & Innovation
 
PPTX
OCI GoldenGate Overview 2021年4月版
オラクルエンジニア通信
 
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
 
PDF
Apache Kafka 0.11 の Exactly Once Semantics
Yoshiyasu SAEKI
 
PDF
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
 
PDF
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
VirtualTech Japan Inc.
 
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
 
PDF
KubeVirt 101
VirtualTech Japan Inc.
 
PDF
オラクルのデータベースセキュリティへの取り組み [2021年2月版]
オラクルエンジニア通信
 
PDF
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
Insight Technology, Inc.
 
PDF
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
PDF
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
 
PDF
Quarkus入門
Norito Agetsuma
 
PDF
Red Hat OpenShift Container Storage
Takuya Utsunomiya
 
PDF
Oracle Cloud Infrastructure セキュリティの取り組み [2021年2月版]
オラクルエンジニア通信
 
PPTX
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
NTT DATA Technology & Innovation
 
PDF
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
Amazon Web Services Japan
 
PDF
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
Amazon Web Services Japan
 
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3
オラクルエンジニア通信
 
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
NTT DATA Technology & Innovation
 
OCI GoldenGate Overview 2021年4月版
オラクルエンジニア通信
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
 
Apache Kafka 0.11 の Exactly Once Semantics
Yoshiyasu SAEKI
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
VirtualTech Japan Inc.
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
 
オラクルのデータベースセキュリティへの取り組み [2021年2月版]
オラクルエンジニア通信
 
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
Insight Technology, Inc.
 
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
 
Quarkus入門
Norito Agetsuma
 
Red Hat OpenShift Container Storage
Takuya Utsunomiya
 
Oracle Cloud Infrastructure セキュリティの取り組み [2021年2月版]
オラクルエンジニア通信
 
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
NTT DATA Technology & Innovation
 
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
Amazon Web Services Japan
 
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
Amazon Web Services Japan
 
Ad

Similar to Rookの基礎・バージョンアップ (20)

PDF
[20190530]yahoo japan+kubernetes meetup "Rook v1.0で試すCSI"
t8kobayashi
 
PDF
Kubernetesのワーカーノードを自動修復するために必要だったこと
h-otter
 
PPTX
Kubernetes in プロダクション! -- cndjp第2回
Hiroshi Hayakawa
 
PDF
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Preferred Networks
 
PDF
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
Preferred Networks
 
PDF
Rancher2.3とwindows Containerで作るkubernetesクラスタ
Takashi Kanai
 
PDF
Rancher2.0で実現する Managed Kubernetes Service
LINE Corporation
 
PDF
OpenStack上に展開するContainer as a Service を本番で利用するために必要だったこと
Masaya Aoyama
 
PDF
Openstack+Ceph設定ガイド
OSSラボ株式会社
 
PPTX
Kubernetes on Mesos Deep Dive [Japanese]
JUNICHI YOSHISE
 
PPTX
Introduction of Kubernetes & Rancher
cyberblack28 Ichikawa
 
PPTX
Diskless Compute Nodeを使ったImmutable OpenStack
Yuki Yamashita
 
PDF
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Preferred Networks
 
PPTX
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
Toshikazu Ichikawa
 
PDF
Rancher basic seminar_200924
Junji Nishihara
 
PPTX
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Akihito Inoh
 
PPTX
RKE + Rancher 2.0
cyberblack28 Ichikawa
 
PDF
Spinnakerを使ったk8s自動化
Satoru Yamamoto
 
PPTX
45分で理解するKubernetesの世界
Kujirai Takahiro
 
PPTX
Java on Kubernetes on Azure
Yoshio Terada
 
[20190530]yahoo japan+kubernetes meetup "Rook v1.0で試すCSI"
t8kobayashi
 
Kubernetesのワーカーノードを自動修復するために必要だったこと
h-otter
 
Kubernetes in プロダクション! -- cndjp第2回
Hiroshi Hayakawa
 
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Preferred Networks
 
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
Preferred Networks
 
Rancher2.3とwindows Containerで作るkubernetesクラスタ
Takashi Kanai
 
Rancher2.0で実現する Managed Kubernetes Service
LINE Corporation
 
OpenStack上に展開するContainer as a Service を本番で利用するために必要だったこと
Masaya Aoyama
 
Openstack+Ceph設定ガイド
OSSラボ株式会社
 
Kubernetes on Mesos Deep Dive [Japanese]
JUNICHI YOSHISE
 
Introduction of Kubernetes & Rancher
cyberblack28 Ichikawa
 
Diskless Compute Nodeを使ったImmutable OpenStack
Yuki Yamashita
 
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Preferred Networks
 
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
Toshikazu Ichikawa
 
Rancher basic seminar_200924
Junji Nishihara
 
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Akihito Inoh
 
RKE + Rancher 2.0
cyberblack28 Ichikawa
 
Spinnakerを使ったk8s自動化
Satoru Yamamoto
 
45分で理解するKubernetesの世界
Kujirai Takahiro
 
Java on Kubernetes on Azure
Yoshio Terada
 
Ad

More from Takashi Sogabe (12)

PPTX
OCP Serverを用いた OpenStack Containerの検証
Takashi Sogabe
 
PDF
Cumulus Linux 導入事例 -ネットワークをDevOpsに統合した、エンジニアが幸せになるインフラ運用手法のご紹介-
Takashi Sogabe
 
PDF
OpenContrail Users Event at OpenStack Summit Paris 行ってきました
Takashi Sogabe
 
PDF
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
Takashi Sogabe
 
PDF
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
Takashi Sogabe
 
PDF
OpenContrailのソースコードを探検しよう!
Takashi Sogabe
 
PDF
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
Takashi Sogabe
 
PDF
Yokozuna 日本語検索機能を評価しました
Takashi Sogabe
 
PDF
コモディティL3SW/ルータでオープンなSDNを実現しよう
Takashi Sogabe
 
PDF
Riak / Riak-CS(Enterprise版) ベンチマークしました
Takashi Sogabe
 
PDF
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Takashi Sogabe
 
PDF
Tokyo ruby kaigi 10 (sogabe)
Takashi Sogabe
 
OCP Serverを用いた OpenStack Containerの検証
Takashi Sogabe
 
Cumulus Linux 導入事例 -ネットワークをDevOpsに統合した、エンジニアが幸せになるインフラ運用手法のご紹介-
Takashi Sogabe
 
OpenContrail Users Event at OpenStack Summit Paris 行ってきました
Takashi Sogabe
 
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
Takashi Sogabe
 
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
Takashi Sogabe
 
OpenContrailのソースコードを探検しよう!
Takashi Sogabe
 
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
Takashi Sogabe
 
Yokozuna 日本語検索機能を評価しました
Takashi Sogabe
 
コモディティL3SW/ルータでオープンなSDNを実現しよう
Takashi Sogabe
 
Riak / Riak-CS(Enterprise版) ベンチマークしました
Takashi Sogabe
 
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Takashi Sogabe
 
Tokyo ruby kaigi 10 (sogabe)
Takashi Sogabe
 

Rookの基礎・バージョンアップ

  • 3. 発表者紹介 •Takashi Sogabe • @rev4t •OpenStack や Ceph の運用をやっています •発表内容の元ネタ • https://bit.ly/2QPeNPf
  • 5. k8s で Storage を使うときの課題 •外部ストレージが必要 •EBS等の、クラウドサービスを使う • k8s node 障害時、 failover に時間を要する •自前でアプライアンスを用意する • ストレージシステムを別途運用するコストが大きい •ベンダ・ロックイン • ブラックボックスが相手だと、何かあっても自分たちで解決 することはできない
  • 6. Rook で解決できること •k8s 上で Storage Operation を実現 •Day1, Day2 Operation の自動化 • Bootstrap • Deploy • Configure • Upgrade •Storage Provisioning • PVC
  • 7. Rook とは? •Open Source (Apache 2.0) •CNCF のプロジェクト •Operator + Custom Resource にて k8s の機能を拡張 •沢山の Storage システムに対応したフレームワーク
  • 8. Storage Providers Project Status Ceph Stable EdgeFS Stable CockroachDB Alpha Cassandra Alpha NFS Alpha YugabyteDB Alpha Minio Alpha 2020年3月現在 (Rook v1.3)
  • 9. Rook Architecture •Rook Operator •人間のオペレータに代わって、Ceph 等のデータを 持った分散システムのデプロイ・管理を実施する •Rook Discover •ストレージノード (k8s worker node)で動作し、ス トレージを自動検出する
  • 11. Rook Version Up •Version Up の対象は、2つあります •Rook •Ex) rook v1.1 -> v1.2 •Storage Backend • Ex) Ceph 14.0.4 -> 14.0.5
  • 12. Version Up Strategy (1) • Rook Control Plane • Release Note 等を確認した上で、修正するべき不具合等があれば、 Version Up を実施します • Major Version Up • ドキュメントに従い Version Up すれば、大きな問題はおこらないはずですが、 必ず事前検証をしておきましょう • Version Up 中、一時的にストレージが利用できない状態になるのでご注意 ください • ceph-mon, ceph-osd の container restart が発生します • Minor Version Up • Minor version up (v1.2.x -> v1.2.y) であれば、ceph-mon /ceph-osd の container restart が発生しないパターンもあるため、影響は軽微になります
  • 13. Version Up Strategy (2) •Ceph •事前テスト等を実施した上で本番環境に Roll Out しましょう •過去に、最新版 Ceph に Version Up することでサー ビス影響が出そうな不具合がしばしば発生しています •ceph-mon, ceph-osd の再起動が one-by-one で実 施されるため、I/O の一時的な性能低下・遅延が発 生します • 一時的なパフォーマンス低下に耐えられる時間帯等で実 施しましょう
  • 14. Version Up: Rook Control Plane •Rook の公式ドキュメントに従って作業を実施 します • https://rook.io/docs/rook/v1.2/ceph-upgrade.html • 公式リリースバージョンの使用が前提です • master ブランチからの Version Up については unsupported になります
  • 15. Rook Version Up (v1.1 -> v1.2)
  • 16. Step 0-1: Ceph Health Verification export ROOK_NAMESPACE=rook-ceph kubectl -n $ROOK_NAMESPACE get pods TOOLS_POD=$(kubectl -n $ROOK_NAMESPACE get pod -l "app=rook-ceph-tools" -o jsonpath='{.items[0].metadata.name}') kubectl -n $ROOK_NAMESPACE exec -it $TOOLS_POD -- ceph status • Version Up 前に、Ceph がクラスタとして正常に稼働していることを確 認しておきます
  • 17. Step 0-2: Ceph Health Verification kubectl -n $ROOK_NAMESPACE exec -it $TOOLS_POD -- ceph status cluster: id: 3cce2f74-a60c-4420-b88e-61b2b3f143ae health: HEALTH_OK services: mon: 3 daemons, quorum a,b,c (age 43m) mgr: a(active, since 42m) osd: 9 osds: 9 up (since 39m), 9 in (since 39m) data: pools: 1 pools, 128 pgs objects: 14 objects, 7.0 MiB usage: 9.0 GiB used, 162 GiB / 171 GiB avail pgs: 19.531% pgs unknown 3.906% pgs not active 98 active+clean 25 unknown 5 peering
  • 18. Step 0-3: k8s Health Verification POD_NAME=$(kubectl -n $ROOK_NAMESPACE get pod -o custom-columns=name:.metadata.name --no- headers | grep rook-ceph-mon-b) # Container の version を確認 kubectl -n $ROOK_NAMESPACE get pod ${POD_NAME} -o jsonpath='{.spec.containers[0].image}‘ ceph/ceph:v14.2.4-20190917 kubectl -n $ROOK_NAMESPACE get deployments -o jsonpath='{range .items[*]}{.metadata.name}{" ¥treq/upd/avl: "}{.spec.replicas}{"/"}{.status.updatedReplicas}{"/"}{.status.readyReplicas}{" ¥trook-version="}{.metadata.labels.rook-version}{"¥n"}{end}‘ kubectl -n $ROOK_NAMESPACE get jobs -o jsonpath='{range .items[*]}{.metadata.name}{" ¥tsucceeded: "}{.status.succeeded}{" ¥trook-version="}{.metadata.labels.rook- version}{"¥n"}{end}' • Version Up 前に、Rook の Control plane が正常に稼働していることを 確認します
  • 19. Step 0-4: k8s Health Verification kubectl -n $ROOK_NAMESPACE get deployments -o jsonpath='{range .items[*]}{.metadata.name}{" ¥treq/upd/avl: "}{.spec.replicas}{"/"}{.status.updatedReplicas}{"/"}{.status.readyReplicas}{" ¥trook- version="}{.metadata.labels.rook-version}{"¥n"}{end}' csi-cephfsplugin-provisioner req/upd/avl: 2/2/2 rook-version= csi-rbdplugin-provisioner req/upd/avl: 2/2/2 rook-version= rook-ceph-mgr-a req/upd/avl: 1/1/1 rook-version=v1.1.9 rook-ceph-mon-a req/upd/avl: 1/1/1 rook-version=v1.1.9 rook-ceph-mon-b req/upd/avl: 1/1/1 rook-version=v1.1.9 rook-ceph-mon-c req/upd/avl: 1/1/1 rook-version=v1.1.9 rook-ceph-operator req/upd/avl: 1/1/1 rook-version= rook-ceph-osd-0 req/upd/avl: 1/1/1 rook-version=v1.1.9 rook-ceph-osd-1 req/upd/avl: 1/1/1 rook-version=v1.1.9 rook-ceph-osd-2 req/upd/avl: 1/1/1 rook-version=v1.1.9 rook-ceph-osd-3 req/upd/avl: 1/1/1 rook-version=v1.1.9 rook-ceph-osd-4 req/upd/avl: 1/1/1 rook-version=v1.1.9 rook-ceph-osd-5 req/upd/avl: 1/1/1 rook-version=v1.1.9 rook-ceph-osd-6 req/upd/avl: 1/1/1 rook-version=v1.1.9 rook-ceph-osd-7 req/upd/avl: 1/1/1 rook-version=v1.1.9 rook-ceph-osd-8 req/upd/avl: 1/1/1 rook-version=v1.1.9 rook-ceph-tools req/upd/avl: 1/1/1 rook-version=
  • 20. Step 0-5: k8s Health Verification kubectl -n $ROOK_NAMESPACE get jobs -o jsonpath='{range .items[*]}{.metadata.name}{" ¥tsucceeded: "}{.status.succeeded}{" ¥trook-version="}{.metadata.labels.rook-version}{"¥n"}{end}' rook-ceph-osd-prepare-k8s-node1 succeeded: 1 rook-version=v1.1.9 rook-ceph-osd-prepare-k8s-node2 succeeded: 1 rook-version=v1.1.9 rook-ceph-osd-prepare-k8s-node3 succeeded: 1 rook-version=v1.1.9
  • 21. Step 1: Update the RBAC and CRDs kubectl apply -f upgrade-from-v1.1-apply.yaml • Operator の Upgrade に必要な、Custom Resource Definition 及び RBAC の更新を実施します
  • 22. Step 2: CSI upgrade pre-requisites kubectl -n $ROOK_SYSTEM_NAMESPACE edit deploy rook-ceph-operator • fuse または rbd-nbd を使っている場合は、CSI driver 再起動時に Pod の mount が外れてしまいます • Cephfs plugin 及び rbd plugin の update strategy を OnDelete に変 更することで、問題を回避します
  • 23. Step 3: Update the Rook Operator kubectl -n $ROOK_SYSTEM_NAMESPACE set image deploy/rook-ceph-operator rook-ceph- operator=rook/ceph:v1.2.5 • Rook ceph operator の container image version を v1.1.9 -> v1.2.5 に変更します
  • 24. Step 4-1: Wait for the upgrade to complete watch --exec kubectl -n $ROOK_NAMESPACE get deployments -l rook_cluster=$ROOK_NAMESPACE -o jsonpath='{range .items[*]}{.metadata.name}{" ¥treq/upd/avl: "}{.spec.replicas}{"/"}{.status.updatedReplicas}{"/"}{.status.readyReplicas}{" ¥trook-version="}{.metadata.labels.rook-version}{"¥n"}{end}' • Rook ceph operator の container image version を v1.1.9 -> v1.2.5 に変更します
  • 25. Step 4-2: Wait for the upgrade to complete rook-ceph-mgr-a req/upd/avl: 1/1/1 rook-version=v1.2.5 rook-ceph-mon-a req/upd/avl: 1/1/1 rook-version=v1.2.5 rook-ceph-mon-b req/upd/avl: 1/1/1 rook-version=v1.2.5 rook-ceph-mon-c req/upd/avl: 1/1/1 rook-version=v1.2.5 rook-ceph-osd-0 req/upd/avl: 1/1/1 rook-version=v1.2.5 rook-ceph-osd-1 req/upd/avl: 1/1/1 rook-version=v1.2.5 rook-ceph-osd-2 req/upd/avl: 1/1/1 rook-version=v1.2.5 rook-ceph-osd-3 req/upd/avl: 1/1/1 rook-version=v1.2.5 rook-ceph-osd-4 req/upd/avl: 1/1/1 rook-version=v1.2.5 rook-ceph-osd-5 req/upd/avl: 1/1/1 rook-version=v1.2.5 rook-ceph-osd-6 req/upd/avl: 1/1/1 rook-version=v1.2.5 rook-ceph-osd-7 req/upd/avl: 1/1/1 rook-version=v1.2.5 rook-ceph-osd-8 req/upd/avl: 1/1/1 rook-version=v1.2.5
  • 26. Step 5: Verify the updated cluster kubectl -n $ROOK_SYSTEM_NAMESPACE get pod -o jsonpath='{range .items[*]}{.metadata.name}{"¥n¥t"}{.status.phase}{"¥t¥t"}{.spec.containers[0].image}{"¥t"}{.spec.initContaine rs[0]}{"¥n"}{end}' && ¥kubectl -n $ROOK_NAMESPACE get pod -o jsonpath='{range .items[*]}{.metadata.name}{"¥n¥t"}{.status.phase}{"¥t¥t"}{.spec.containers[0].image}{"¥t"}{.spec.initContaine rs[0].image}{"¥n"}{end}‘ … rook-ceph-operator-6b8474c69c-qt9tl Running rook/ceph:v1.2.5 rook-ceph-osd-prepare-k8s-node1-x6tpr Succeeded ceph/ceph:v14.2.4-20190917 rook/ceph:v1.2.5 rook-ceph-osd-prepare-k8s-node2-72h27 Succeeded ceph/ceph:v14.2.4-20190917 rook/ceph:v1.2.5 rook-ceph-osd-prepare-k8s-node3-rql6v Succeeded ceph/ceph:v14.2.4-20190917 rook/ceph:v1.2.5 rook-discover-j4pn7 Running rook/ceph:v1.2.5 rook-discover-j4xgj Running rook/ceph:v1.2.5 rook-discover-k8cc7 Running rook/ceph:v1.2.5 • Rook の control plane が v1.2.5 になっていることを確認します
  • 27. Step 6: CSI Manual Update (optional) •CSI driver 再起動時に mount が外れる問題 に該当する場合は、CSI driver の手動 version up を実施します • Application Pods の drain を各 worker node にて実施 • CSI driver pod の delete を実施 • Delete 後に作成される新しい Pod は、version up されています
  • 28. Step 7: Update Rook-Ceph custom resource definitions kubectl apply -f upgrade-from-v1.1-crds.yaml • Version up 全ての Step 完了後に、Custom Resource Definition を 更新します
  • 29. Rook Version Up (v1.2.x -> v1.2.y)
  • 30. Step 1: Patch Release Upgrades kubectl -n rook-ceph set image deploy/rook-ceph-operator rook-ceph- operator=rook/ceph:v1.2.5 • Ceph operator の Custom Resource について、image のバージョンを 変更します • 移行先の Version 番号によって、影響を受ける Pod が異なります • 事前に、実際に使用する from, to の version を用いたテストを実 施しておくことをお勧めします
  • 31. Affected components (v1.2.x -> v1.2.y) From -> To CSI Driver ceph-mon ceph-osd ceph-mgr V1.2.x -> v1.2.0 Affected - Affected - v1.2.0 -> v1.2.1 - - Affected - v1.2.1 -> v1.2.2 Affected - Affected - v1.2.2 -> v1.2.3 Affected - - - v1.2.3 -> v1.2.4 - - - - v1.2.4 -> v1.2.5 Affected - - - • 対象Deployment / DaemonSet の PodTemplate が変更されると、当 該Pod の delete / create が発生します
  • 32. Ceph Version Up (v14.2.4 -> v14.2.7)
  • 33. Step 1: Update the main Ceph daemons ROOK_NAMESPACE=rook-ceph NEW_CEPH_IMAGE=ceph/ceph:v14.2.7 CLUSTER_NAME=$ROOK_NAMESPACE kubectl -n $ROOK_NAMESPACE patch CephCluster $CLUSTER_NAME --type=merge -p "{¥"spec¥": {¥"cephVersion¥": {¥"image¥": ¥"$NEW_CEPH_IMAGE¥"}}}" • Ceph cluster の Custom Resource について、image のバージョンを変 更します • Update に必要な実際の処理については、Rook operator が自動的 に実施します
  • 34. Step 2-1: Wait for the daemon pod updates to complete # 各Podの update 状況を確認します watch --exec kubectl -n $ROOK_NAMESPACE get deployments -l rook_cluster=$ROOK_NAMESPACE -o jsonpath='{range .items[*]}{.metadata.name}{" ¥treq/upd/avl: "}{.spec.replicas}{"/"}{.status.updatedReplicas}{"/"}{.status.readyReplicas}{" ¥tceph- version="}{.metadata.labels.ceph-version}{"¥n"}{end}‘ # 全ての Pod について、update が完了したことを確認します kubectl -n $ROOK_NAMESPACE get deployment -l rook_cluster=$ROOK_NAMESPACE -o jsonpath='{range .items[*]}{"ceph-version="}{.metadata.labels.ceph- version}{"¥n"}{end}' | sort | uniq • Update 処理が完了するのを待ちます • 上記コマンドを実行することで、現在の status を確認できます
  • 35. Step 2-2: Wait for the daemon pod updates to complete # Rook operator 側の稼働状況をリアルタイムに確認します ROOK_OPERATOR_POD=$(kubectl -n rook-ceph get pod -l "app=rook-ceph-operator" -o jsonpath='{.items[0].metadata.name}') kubectl -n rook-ceph logs -f $ROOK_OPERATOR_POD • Rook operator の稼働状況をリアルタイムに確認することで、進捗状 況を詳細に把握することができます
  • 36. Step 3: Verify the updated cluster TOOLS_POD=$(kubectl -n $ROOK_NAMESPACE get pod -l "app=rook-ceph-tools" -o jsonpath='{.items[0].metadata.name}')kubectl -n $ROOK_NAMESPACE exec -it $TOOLS_POD -- ceph status cluster: id: 3cce2f74-a60c-4420-b88e-61b2b3f143ae health: HEALTH_OK … • Ceph cluster が正常に稼働していることを確認します
  • 38. Rook Ceph with External Cluster (1) • 既存の Ceph Cluster に対して、Rook を用いた k8s との連携ができます • メリット • CSI Driver の運用管理のみを k8s で実施する形になるため、k8s 側の運用コス トを下げつつ責任分界点をキッチリと分けられます • Rook Version Up の際に Ceph Cluster に与えるサービス影響を完全に排除で きます • k8s networking による性能低下の影響を受けません • デメリット • Rook のほかに Ceph のデプロイツールを導入する必要があります • ただし、Ceph 自体が強力な自律システムであるため、オペレータが障害時に介入する 必要はありません • ceph-mon のノード数が障害等の影響で減少した際は、別途デプロイツールを走らせ る必要があります
  • 39. Rook Ceph with External Cluster (2) •Rook + ceph-ansible (container deployment) • Ceph のデプロイについては、ceph-ansible を用います • ceph-mon, ceph-osd の配置を自由に決められます • k8s worker node 上に配置 • k8s クラスタとは独立したノードに配置 • crush mapping や block device mapping に k8s を介在させる必要がないため、運用がシンプ ルになります • ceph-ansible 自体が agent 不要でシンプルなため、agent 起因で Ceph クラスタに 影響を与える可能性がありません
  • 41. Summary: Rook Version Up (1) •長期的な運用の観点では、対象の Storage Backend だけでなく、Rook Operator 自体の Version Up が必要になる •Minor Version Up は作業コスト・リスクは低いものの、 Major Version Up についてはサービスへの影響を伴う 作業が発生する
  • 42. Summary: Rook Version Up (2) •Ceph の Version Up については、煩雑な作業 を Rook Operator が引き受けてくれるため、と ても便利 • ただし、リリース直後の Ceph には致命的な Known Issues が 含まれている可能性もあるため、十分な事前検証が必要
  • 43. Summary: Rook Version Up (3) •K8s 側の運用をシンプルにしたい場合は.. •ceph-ansible + Rook external cluster • Ceph クラスタの管理については ceph-ansible を用いる • Rook は external cluster の形でCeph を使用する • メリット • Rook Operator の Version Up に伴う Ceph クラスタへのサービス影響を排除で きる • デメリット • 2つのデプロイシステムを管理する必要がある • ceph-mon が worker ノード障害等で減少した際は、手動で ceph-ansible コ マンドを実行してノード数を維持させる必要がある