現代のソフトウェア開発者のほとんどが証明しているように、コンテナは物理インフラストラクチャと仮想インフラストラクチャの両方でクラウドネイティブ アプリケーションを実行するための柔軟性を高めます。コンテナーは、アプリケーションを構成するサービスをパッケージ化し、開発/テストと本番環境での使用の両方において、さまざまなコンピューティング環境間で移植できるようにします。コンテナを使用すると、需要の急増に対応するためにアプリケーション インスタンスを迅速に拡張することが容易になります。また、コンテナはホスト OS のリソースを活用するため、仮想マシンよりもはるかに軽量です。これは、コンテナが基盤となるサーバー インフラストラクチャを効率的に利用できることを意味します。ここまでは順調ですね。 ただし、コンテナ ランタイム API は個々のコンテナの管理には適していますが、複数のホストに分散された数百のコンテナで構成されるアプリケーションの管理に関しては、まったく不十分です。コンテナは、スケジューリング、負荷分散、分散などのタスクを実行するために管理され、外部に接続する必要があります。ここで、Kubernetes などのコンテナ オーケストレーション ツールが役立ちます。 Kubernetes は、コンテナ化されたアプリケーションをデプロイ、スケーリング、管理するためのオープンソース システムです。コンテナをコンピューティング クラスターにスケジュールし、ワークロードを管理して、ユーザーが期待するとおりに実行されるようにする作業を処理します。 Kubernetes は、運用を後から追加するのではなく、ソフトウェア開発と運用を設計によって統合します。 Kubernetes は、インフラストラクチャに依存しない宣言型構造を使用してアプリケーションの構成方法、相互作用方法、管理方法を記述することで、最新のソフトウェア システムの操作性を大幅に向上させます。 Kubernetes は、コンテナを本番環境で実行した Google 自身の経験に基づいて構築されており、その成功は主に Google の関与によるものです。 Google は世界でも最も才能のあるソフトウェア開発者を擁しており、最大規模のソフトウェア サービスを運営しています。この組み合わせにより、Kubernetes はほぼすべての組織の拡張ニーズを満たすことができる堅牢なプラットフォームになることが保証されます。 この記事では、Kubernetes がなぜそれほど重要なのか、そしてそれが DevOps チームにとって大きな前進となる理由について説明します。 今日のインフラストラクチャフレームワーク 今日、開発者は、専用のオンプレミス サーバー、仮想化されたプライベート クラウド、AWS や Azure などのパブリック クラウドなど、複数のオペレーティング環境で実行されるアプリケーションを作成することが求められています。従来、アプリケーションとそれらをサポートするツールは、基盤となるインフラストラクチャに密接に結合されていたため、代替の展開モデルを使用すると、潜在的なメリットがあるにもかかわらずコストがかかっていました。これは、特定のネットワーク アーキテクチャに関連するパフォーマンスの問題など、アプリケーションがさまざまな方法で特定の環境に依存していることを意味します。独自のオーケストレーション技術などのクラウドプロバイダー固有のアーキテクチャの遵守。特定のバックエンド ストレージ システムへの依存関係。 PaaS はこれらの問題に対処しようとしますが、多くの場合、プログラミング言語やアプリケーション フレームワークなどの分野での厳しい要件を犠牲にする必要があります。その結果、多くの開発チームにとって PaaS は利用不可能になっています。 Kubernetes は、制限を課すことなくコンテナにコア機能を提供することで、インフラストラクチャのロックインを排除します。これは、ポッドやサービスなどの Kubernetes プラットフォーム内の機能を組み合わせることによって実現されます。 モジュール化による管理の改善 コンテナを使用すると、関心事を明確に分離してアプリケーションをより小さな部分に分割できます。単一のコンテナ イメージに提供される抽象化レイヤーにより、分散アプリケーションの構築方法を根本的に再考することができます。このモジュール式のアプローチにより、それぞれが特定のコンテナを担当する、より小規模で集中的なチームによる迅速な開発が可能になります。また、依存関係を分離し、より小さく調整されたコンポーネントを広範囲に使用することも可能になります。ただし、コンテナだけではこれを実現することはできません。これらのモジュール部品を統合し、調整するためのシステムが必要です。 Kubernetes は、部分的には、通常は単一のアプリケーションとして制御されるコンテナのグループである Pod を使用してこれを実現します。コンテナは、ファイル システム、カーネル名前空間、IP アドレスなどのリソースを共有します。このようにコンテナを共存させることで、Kubernetes は単一のコンテナ イメージに過剰な機能を詰め込みたいという誘惑を排除します。 Kubernetes のサービスという概念は、同様の機能を実行する Pod のコレクションをグループ化するために使用されます。サービスは、検出可能性、可観測性、水平スケーリング、負荷分散のために簡単に構成できます。 大規模なソフトウェアの導入と更新 DevOps は、ソフトウェアの構築、テスト、リリースのプロセスを高速化する方法として登場しました。その結果、インフラストラクチャの管理から、ソフトウェアを大規模に展開および更新する方法の管理へと重点が移行します。ほとんどのインフラストラクチャ フレームワークはこのモデルをサポートしていませんが、Kubernetes は Kubernetes コントローラーを使用して部分的にサポートしています。コントローラーを使用すると、インフラストラクチャを使用してアプリケーションのライフサイクルを簡単に管理できます。デプロイメント コントローラーは、多くの複雑な管理タスクを簡素化します。例えば: 1. スケーラビリティ: 初めて、ソフトウェアを Pod 内でスケールアウト方式でデプロイできるようになり、デプロイはいつでもスケールアウトまたはスケールアップできます。 2. 可視性: ステータス クエリ機能を使用して、完了したデプロイメント、進行中のデプロイメント、失敗したデプロイメントを識別します。 3. 時間を節約: いつでもデプロイを一時停止し、後で再開できます。 4. バージョン管理: デプロイされたポッドを新しいバージョンのアプリケーション イメージで更新し、現在のバージョンが不安定な場合は以前のデプロイにロールバックします。 Kubernetes は、他の可能性の中でも、特に最新のアプリケーションの開発者にとって価値のある特定のデプロイメント操作を簡素化します。これらには以下が含まれます: 1. 水平自動スケーリング: Kubernetes オートスケーラーは、指定されたリソースの使用状況 (定義された制限内) に基づいて、デプロイするポッドの数を自動的に決定します。 2. ローリング アップデート: Kubernetes デプロイメントへのアップデートは、デプロイされたポッド全体で「ローリング方式」で調整されます。これらのローリング アップデートは、使用できない可能性のあるポッドの数と一時的に存在する可能性のあるスタンバイ ポッドの数に関するオプションの定義済み制限を使用して調整されます。 3. カナリア デプロイメント: 新しいバージョンのデプロイメントをデプロイする場合、最初に新しいデプロイメントを本番環境で以前のバージョンと並行してテストし、新しいデプロイメントをスケールアップしながら以前のデプロイメントをスケールダウンするというパターンが役立ちます。 従来の包括的な PaaS サービスとは異なり、Kubernetes ではサポートされるアプリケーションの種類に関して幅広い自由度が提供されます。アプリケーション フレームワーク (Wildfly など) を指定したり、サポートされる言語ランタイム (Java、Python、Ruby) を制限したり、12 要素アプリのみに対応したり、「アプリケーション」と「サービス」を区別したりすることはありません。 Kubernetes は、ステートレス、ステートフル、データ処理ワークロードなど、さまざまなワークロードをサポートします。アプリケーションがコンテナ内で実行できる場合は、Kubernetes でも問題なく実行されるはずです。 クラウドネイティブアプリケーションの基盤の構築 コンテナへの関心の高さを考えると、他の管理およびオーケストレーション ツールが登場してきたのも当然です。人気のある代替手段としては、Apache Mesos with Marathon、Docker Swarm、AWS EC2 Container Service (ECS)、HashiCorp の Nomad などがあります。それぞれに利点があります。 Docker Swarm は Docker ランタイムと緊密にバンドルされているため、ユーザーは Docker から Swarm に簡単に移行できます。 Mesos と Marathon はコンテナに限定されず、あらゆる種類のアプリケーションをデプロイできます。 AWS ECS は、現在の AWS ユーザーにとってよりアクセスしやすくなっています。ただし、Kubernetes クラスターは EC2 上で実行でき、Amazon Elastic Block Storage、Elastic Load Balancing、Auto Scaling Groups などのサービスと統合できます。これらのフレームワークは機能面で互いにコピーし始めていますが、Kubernetes は、そのアーキテクチャ、革新性、およびそれを取り巻く大規模なオープンソース コミュニティにより、依然として非常に人気があります。 Kubernetes は、チームが最新のソフトウェア開発の要求に対応できるようにするため、開発者にとって画期的な技術です。 Kubernetes がなければ、チームは独自のソフトウェアの展開、スケーリング、更新ワークフローをスクリプト化しなければならないことがよくあります。一部の組織では、これらのタスクを単独で処理するために大規模なチームを雇用しています。 Kubernetes を使用すると、コンテナを最大限に活用し、クラウド固有の要件に関係なく、どこでも実行できるクラウドネイティブ アプリケーションを構築できます。明らかに、これは私たちが待ち望んでいたアプリケーション開発と運用のための効率的なモデルです。 オリジナルリンク: https://www.infoworld.com/article/3173266/4-reasons-you-should-use-kubernetes.html |
<<: サードパーティのサービスレジストリを Istio に統合するにはどうすればよいですか?
>>: エッジコンピューティングへの投資はどこに向かうのでしょうか?
この記事は、武漢SEOクレイジーが約1か月前にA5チャットに投稿したものです。当時は比較的シンプルな...
オンラインゲームは、時間課金、無料装備取引、ポイントカードシステムなど、インターネット上で最も初期か...
hosteons は、新しいサーバーをリリースしました: 4 x AMD Opteron(tm) プ...
最近、ブロードバンドを 100M 光ファイバーにアップグレードし、インターネットの速度が大幅に向上し...
2012年10月、百度ウェブマスタープラットフォームは「ハイパーリンク不正行為に関するアルゴリズムの...
2020年、新型コロナウイルス感染症のパンデミックが世界を席巻し、伝統的な実体経済は大きな打撃を受け...
[[404296]]みなさんこんにちは、私は悟空です。前回の記事では、MySQL と NoSQL の...
本日お話ししたいのは、OPPO App Market が店頭に並ぶ前から店頭に並んだ後までの運用プロ...
iozoom の担当者に連絡したところ、有効期間が 4 日間の VPS が開設されました。iozoo...
alnitech.com では、E3 U、16G メモリ、2 つの 1T ディスク、100M 無制限...
みなさん、こんにちは。皆さんと私の経験を共有してから長い時間が経ちました。最近、私は内部ウェブサイト...
最近、Discuz! が立ち上げたフォーラム サービス製品「防水壁」が、Tencent Weibo ...
ショートビデオの人気により、DouyinとKuaishouという2つのプラットフォームの人気が急速に...
電子商取引は急速に発展しており、オンラインマーケティングもそれに応じて変化しています。新興の人気産業...
数日前、WeChatで友人からメッセージが届きました。開いてみると、清明節に広州の地王広場で開催され...