Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kubernetesに必要なストレージの要件とは? / What are the storag...

Kazuki Suda
December 10, 2019

Kubernetesに必要なストレージの要件とは? / What are the storage requirements for Kubernetes?

NetApp INSIGHT 2019 TOKYO 2019年12月10日 #NetApp #INSIGHTTOKYO

Kazuki Suda

December 10, 2019
Tweet

More Decks by Kazuki Suda

Other Decks in Technology

Transcript

  1. Kazuki Suda / @superbrothers ▶ ゼットラボ株式会社 ソフトウェアエンジニア ▶ ヤフー株式会社 「Kubernetes」黒帯

    ▶ Kubernetes Meetup Tokyo, Cloud Native Deep Dive 共同主催者 ▶ Kubernetes アクティブコントリビュータ ▶ クラウドネイティブ・アンバサダ(CNCF)
  2. アジェンダ 1. Kubernetes とは何か 2. Kubernetes での永続ストレージ 3. ヤフーにおける Kubernetes

    の利⽤ 4. Kubernetes に必要なストレージの3つの要件 5. NetApp Trident 6. NetApp Trident のここが⾜りない 7. まとめ
  3. ロードバランサ 永続ストレージ ホスト コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ ホスト

    ナ コンテナ ナ コンテナ ナ コンテナ ホスト コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ ホスト コンテナ コ コンテナ コ コンテナ コ Kubernetes デプロイ戦略 ネットワーク
  4. Kubernetes ▶ 初期は Google のソフトウェアだったが、その後 Cloud Native Computing Foundation(CNCF)に譲渡され、 現在は

    CNCF がホストするオープンソースプロジェクト + CNCF は Linux Foundation 傘下の組織 ▶ 「10年以上に渡りコンテナを本番環境で運⽤してきた Google の経験と 多くの企業によるコミュニティの優れたアイデアと⼿法が組み込まれている」
  5. Kubernetes での永続ストレージ ▶ 特定ベンダに依存せずにストレージの利⽤を抽象化している + PersistentVolume(永続ボリューム) + PersistentVolumeClaim(永続ボリュームの要求) + StorageClass(ストレージクラス)

    ▶ クラスタ管理者とアプリケーション開発者の役割が考慮されている + 管理者: クラスタ全体の管理者、アドミン権限を持つ + 開発者: 永続ボリュームを利⽤するアプリケーションをデプロイする
  6. PersistentVolume(PV) ▶ サイズ(e.g. 100GiB ▶ アクセスモード + ReadWriteOnce (RWO), ReadWriteMany

    (RWX), ReadOnlyMany (RWO) ▶ 再要求ポリシ + Retain(そのまま)、Delete(PV 削除)、Recycle(データ削除) ▶ ボリュームへの接続情報
  7. ヤフーの Kubernetes-as-a-Service(KaaS) ヤフー向けにゼットラボが開発するマネージド Kubernetes サービス。 オンプレミスの OpenStack 環境に Kubernetes クラスタを作成、管理する。

    2016年7⽉から開発を始め、ヤフーの Kubernetes の利⽤を⽀える。 https://speakerdeck.com/superbrothers/the-technology-behind-managed-kubernetes-service-of-yahoo-japan
  8. 次の挑戦: ステートレスからステートフルへ ▶ これまでは、状態を持たないHTTP サーバやアプリケーションサーバ (12 Factor App)の実⾏に注⼒ + ステートレスアプリケーションは、問題が発⽣したら単に再起動すれば復

    旧するため、Kubernetes と相性がよく簡単に導⼊できる ▶ ⼀⽅で、データとして状態を保持するデータベースや分散システムといった ステートフルアプリケーションも社内には多く存在する + ステートフルアプリケーションも Kubernetes の強⼒な機能を 利⽤して運⽤したい
  9. 次の挑戦: ステートレスからステートフルへ ▶ 我々の KaaS ではクラスタのセルフヒーリングやアップグレードによって ノードが削除される + ステートレスでは⼈間が介在することなく⾃動的に回復する ▶

    しかし、ステートフルアプリケーションではノードのローカルストレージに データを保持すると消失してしまう + データは外部の永続ストレージに保存しなければならない
  10. 1. ストレージ⾃体の信頼性と運⽤ ▶ ストレージシステム⾃体が信頼できることが⼤前提 ▶ Kubernetes 上にストレージシステムを構築する Rook や OpenEBS

    といった オープンソースの SDS 等も存在するが… + 安定運⽤するにはソースコードレベルで理解し、加えてKubernetesに 精通した⼈らで構成されたチームが必要 + ストレージは技術的に特に難しく、またビジネスとしてストレージ⾃体に 強みを持ちたいわけではない + 格納するデータの価値によっては検討の余地あり
  11. NetApp Trident ▶ コンテナ向けのストレージオーケストレータ + ボリュームの動的プロビジョニングと管理 ▶ NetApp 社が開発するソフトウェアで完全にオープンソース +

    https://github.com/NetApp/trident + https://netapp-trident.readthedocs.io/ ▶ サポートするプラットフォーム + Kubernetes(CSI), Docker(Volume plugin)
  12. Kubernetes ノード CSI Trident Node Pod Pod ノード CSI Trident

    Node CSI Trident Controller ボリュームの作成、削除 ボリュームのアタッチ/デタッチ ボリュームのリサイズ スナップショットの作成 ボリュームのマウント/アンマウント
  13. ノード Pod Pod ノード Pod ontap-file SC ontap-block SC データ

    LIF データ LIF 管理 LIF SVM アグリゲート FlexVol FlexVol FlexVol export-policy (ip) igroup (iqn) SVM SVM クラスタ クラスタ クラスタ ONTAP 9
  14. Trident のここがスゴい! ▶ しっかり動く ▶ オープンソースソフトウェア(OSS)である + トラブルシュート時にソースコードが参照できることは⼤きなメリット + NetApp

    Corporate Contributor License Agreement に 同意すればパッチもマージしてくれる ▶ Kubernetes のリリースサイクルにしっかり追従してる + Trident は、3ヶ⽉に⼀度のリリースで最新バージョンに追従!
  15. NetApp Trident のここが⾜りない 1. export-policy(NFS), igroup(iSCSI)の動的な更新をサポートしていない 2. メトリクス(指標)をサポートしていない 3. ONTAP

    SVM のメトリクスを公開してほしい 4. Trident の開発を github.com でやってほしい 5. SVM レベルで Quota を設定したい
  16. まとめ ▶ Kubernetes とは + コンテナオーケストレーションツール + 複数のマシンで構成されるクラスタに対して コンテナ(アプリケーション)の配備、設定、管理を⾏う ▶

    Kubernetes での永続ストレージ + 特定ベンダに依存せず永続ボリュームの利⽤を抽象化 + PersistentVolume, PersistentVolumeClaim, StorageClass
  17. まとめ ▶ ヤフーにおける Kubernetes の利⽤ + 2019年7⽉時点で400クラスタ以上 + ステートレスからステートフルへ ▶

    Kubernetes で必要なストレージの3つの要件と NetApp ONTAP 1. ストレージ⾃体の信頼性と運⽤ ヤフーでの運⽤実績 2. マルチテナント SVM とアグリの分離 3. 動的プロビジョニングのサポート NetApp ONTAP + Trident
  18. まとめ ▶ NetApp Trident + Kubernetes での永続ボリュームの動的プロビジョニングと管理 + 完全にオープンソースソフトウェア +

    ONTAP ほか、いくつかのデータプラットフォームをサポート ▶ ヤフーでの NetApp Trident の利⽤ + 2020年4⽉から本番での利⽤を開始予定 + 次のチャレンジは + MetroCluster + ステートフルアプリケーション on Kubernetes
  19. © 2019 NetApp, Inc. All rights reserved. No portions of

    this presentation may be reproduced without prior written consent of NetApp, Inc. Specifications are subject to change without notice. NetApp and the NetApp logo are registered trademarks of NetApp, Inc. in the United States and/or other countries. All other brands or products are trademarks or registered trademarks of their respective holders. ありがとうございました