第5章 Kubernetesでデータベース管理を自動化する Kubernetes上のデータベース管理を演算子で自動化する
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
この章では、Kubernetes上でデータベースを実行するための探求を続けるが、インストールから演算子へとフォーカスを移す。初期デプロイのために、データベースアプリケーションの要素がKubernetesが提供するプリミティブにどのようにマッピングされるかを知るだけでは十分ではない。ビジネスクリティカルなアプリケーションをサポートするために、そのインフラを長期にわたって維持する方法も知っておく必要がある。この章では、データベースを効率的に稼働させ続けることができるように、Kubernetesの演算子に対するアプローチを見ていこう。
データベースやその他のデータインフラの演算子は、以下のような「2日目」のタスクの共通リストで構成される:
サイズの変更されたクラスタ間でのワークロードの再割り当てを含む、キャパシティのスケールアップとスケールダウン
データベースの健全性を監視し、障害が発生したインスタンスを交換する。
Apache Cassandraの修復操作など、定期的なメンテナンスタスクを実行する。
ソフトウェアのアップデートとパッチ適用
セキュアなアクセスキーおよびその他の資格情報を維持する。
バックアップを実行し、災害復旧時にデータを復元するために使用する。
これらのタスクの実行方法の詳細は技術によって異なるかもしれないが、共通の関心事は、自動化を利用していかに人間の演算子のワークロードを減らし、より大規模なインフラ運用を可能にするかということである。人間の演算子が蓄積してきたこれらのタスクに関する知識を、どのように取り入れることができるだろうか?従来のクラウド運用では、クラウド・インフラストラクチャの外部で実行されるスクリプト・ツールを使用してきたが、よりクラウド・ネイティブなアプローチは、このデータベース制御ロジックをKubernetesクラスタ内で直接実行させることだ。本章で探求するのは、この制御ロジックを表現するKubernetesに適した方法は何かということだ。
Kubernetesコントロールプレーンを拡張する
良いニュースは、Kubernetesの設計者はこの質問に全く驚いていないということだ。実際、KubernetesのコントロールプレーンとAPIは拡張できるように設計されている。Kelsey Hightower氏らは、Kubernetesを「プラットフォームを構築するためのプラットフォーム」と呼んでいる。
Kubernetesは、主にそのコントロールプレーンに関連する複数の拡張点を提供する。図5-1には、APIサーバ、スケジューラ、Kubelet、kubectl などのKubernetesコアコンポーネントと、それらがサポートする拡張点が示されている。
図5-1. Kubernetesのコントロールプレーンと拡張点
それでは、ローカルクライアント上のコンポーネントとKubernetesクラスタ内のコンポーネントから、Kubernetesコントロールプレーンを拡張する詳細を検証していこう。これらの拡張点の多くは、データベースやデータインフラに関連するものだ。 ...