第1章 はじめに
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
Kubernetesは、コンテナ化されたアプリケーションをデプロイするためのオープンソースのオーケストレーションだ。 もともとはGoogleによって開発されたもので、アプリケーション指向のAPIを通じてスケーラブルで信頼性の高いシステムをコンテナでデプロイしてきた10年の経験にヒントを得ている。1
2014年の登場以来、Kubernetesは世界最大かつ最も人気のあるオープンソースプロジェクトの1つに成長した。ほぼすべてのパブリッククラウドに存在し、クラウドネイティブアプリケーションを構築するための標準APIとなっている。Kubernetesは、Raspberry Piコンピュータのクラスタから最新マシンでいっぱいのデータセンターまで、あらゆる規模のクラウドネイティブ開発者に適した分散システム用の実績あるインフラだ。 信頼性が高く、スケーラブルな分散システムの構築とデプロイを成功させるために必要なソフトウェアを提供する。
"信頼性が高く、スケーラブルな分散システム "というと、どういうことかと思われるかもしれない。ますます多くのサービスが、APIを通じてネットワーク経由で提供されるようになっている。 これらのAPIは分散システムによって提供されることが多く、APIを実装する様々な部分が異なるマシン上で実行され、ネットワーク経由で接続され、ネットワーク通信を介して動作を座標化している。私たちは日常生活のあらゆる場面(例えば、最寄りの病院への道順を発見する)で、ますますこれらのAPIに依存するようになっているため、これらのシステムは高い信頼性を持たなければならない。システムの一部がクラッシュしたり、機能しなくなったりしても、故障することはない。 同様に、ソフトウェアのロールアウトやその他のメンテナンスの際にも、可用性を維持しなければならない。最後に、このようなサービスをオンラインで利用する人が世界中でますます増えているため、サービスを実装する分散システムを抜本的に再設計することなく、増え続ける利用量に対応できるように容量を拡大できるよう、高いスケーラビリティが求められる。多くの場合、これは、アプリケーションが最大限の効率を発揮できるように、容量を自動的に拡大(縮小)することも意味する。
本書を手にした時期や理由によって、コンテナや分散システム、Kubernetesの経験はさまざまだろう。パブリッククラウドインフラやプライベートデータセンター、あるいはハイブリッド環境でのアプリケーション構築を計画しているかもしれない。 経験にかかわらず、本書を読めばKubernetesを最大限に活用できるようになるはずだ。
人々がコンテナやKubernetesのようなコンテナAPIを使うようになった理由はたくさんあるが、我々はそのすべてがこれらの利点の1つに帰着できると考えている:
-
開発速度
-
スケーリング(ソフトウェアとチームの両方)
-
インフラを抽象化する
-
効率性
-
クラウド・ネイティブ・エコシステム
以下のセクションでは、Kubernetesがこれらの各機能の提供にどのように役立つかを説明する。
速度
今日、ほとんどすべてのソフトウェア開発において、スピードは重要な要素である。 ソフトウェア業界は、箱入りのCDやDVDとして製品を出荷することから、1時間ごとに更新されるウェブベースのサービスを通じてネットワーク経由で配信されるソフトウェアへと進化した。このような状況の変化により、競合他社との差は、新しいコンポーネントや機能を開発しデプロイするスピードや、他社が開発したイノベーションに対応するスピードであることが多い。 ...