ということは、おそらくしばらく Docker コンテナを使って作業しているのではないでしょうか?最初のコンテナを回転させるときの興奮は魔法のように感じられますが、その後現実が襲ってきます。大規模なコンテナの管理が、すぐに物流上の悪夢になる可能性があることに気づき始めます。そのとき、Kubernetes (K8s) が熟練のプロジェクト マネージャーのように部屋に入り、すべてを引き継いで合理化する準備ができています。
この投稿では、スタンドアロン コンテナの課題、Kubernetes がそれらの悩みの解決にどのように役立つか、そして Kubernetes を使用する場合 (および 使用しない 場合) について説明します。さあ、始めましょう!
スタンドアロン コンテナを使用したことがある場合は、次の問題に見覚えがあるかもしれません:
スタンドアロン コンテナーのスケーリングは、もぐらたたきのゲームをするようなものです。もっと容量が必要ですか?別のコンテナを手動で起動します。ああ、今すぐリソースを削減する必要がありますか?一部のコンテナを手動でシャットダウンします。特に予測できないトラフィックの急増がある場合、これはすぐに管理できなくなります。
コンテナはどのように相互に通信しますか? Docker を使用すると、IP アドレスをハードコーディングしたり、不自然なカスタム ネットワークを設定したりする必要があります。かさばるし、維持するのも大変です。
コンテナの 1 つがダウンするとどうなりますか?スタンドアロンの Docker は、それ自体ではうまく処理できません。すべてを監視し、停止したコンテナを手動で再起動する必要があります。土曜日の午前 3 時にそれがどれほど楽しいことか、私たちは皆知っています。
マルチコンテナアプリの管理は難しくなります。相互作用の方法を調整し、依存関係を処理し、適切なタイミングですべてが起動していることを確認する必要があります。突然、シンプルなアプリが砂上の楼閣のように感じられます。
誰もが話題にしているコンテナ オーケストレーターである Kubernetes は、これらの問題点の多くを自動化します。これがどのように介入して窮地を救うかです:
K8s を使用すると、CPU またはメモリの使用量に基づいてスケーリング ルールを定義できます。トラフィックが増加したときにより多くのコンテナを自動的に起動し、状況が落ち着いたらシャットダウンするように設定できます。もうベビーシッターは必要ありません。
Kubernetes を使用すると、コンテナはすべてがどこにあるかを心配する必要がなくなります。 K8s はサービスに DNS 名を自動的に割り当てるため、コンテナーはスムーズに通信できます。
コンテナが停止した場合、Kubernetes はコンテナを自動的に再起動します。夜明けにコンテナを再起動するためにベッドから慌てて起き上がる必要はもうありません。 K8s は、自己修復能力によりアプリをスムーズに実行し続けます。
K8s は、複雑なマルチコンテナ アプリを簡単に処理します。それらをポッドとサービスに整理することで、新しいバージョンのロールアウト、依存関係の処理、すべてが調和して動作していることの確認が容易になります。
Kubernetes は素晴らしく聞こえますが、あらゆる問題に対する特効薬ではありません。 Kubernetes が正しい選択となる 5 つのケースを次に示します:
アプリでトラフィックの変動が発生した場合、またはその場でリソースを自動的に調整する必要がある場合、Kubernetes の自動スケーリングは状況を一変させます。
アプリがマイクロサービスで構成されている場合、K8s を使用すると、複数のサービスの管理が容易になり、すべてのサービスがスムーズに通信できるようになります。
アプリの一部に障害が発生しても回復力を維持できるアプリが必要ですか? Kubernetes の自己修復機能により、ダウンタイムは最小限に抑えられます。
継続的インテグレーション/継続的デプロイメント パイプラインを構築している場合、Kubernetes のローリング アップデートと簡単なロールバック機能が優れた選択肢となります。
K8s は、複数のクラウド プロバイダーまたは独自のデータ センターにわたるワークロードを管理する必要がある場合に最適です。インフラストラクチャを抽象化するので、アプリに集中できるようになります。
しかし、Kubernetes は必ずしも必要というわけではありません。複雑さを避けたい場合は次のとおりです:
アプリが小規模な 1 コンテナーのサービスの場合、Kubernetes は過剰です。シンプルにするために Docker を使用してください。
チームがコンテナーを初めて使用する場合、Kubernetes に直接取り組むのは難しいかもしれません。 K8 に飛び込む前に、まず Docker をマスターしてください。
継続的なスケーリングやフェイルオーバーを必要とせず、予測可能でトラフィックが少ないアプリの場合、Kubernetes のオーバーヘッドは価値がありません。
ハッカソン プロジェクトや簡単な実証実験など、一時的なものを立ち上げている場合、Kubernetes は価値がある以上に問題になる可能性があります。
K8 はリソースを大量に消費する可能性があります。 CPU、メモリ、ストレージが限られた環境で作業している場合、効果があるどころか速度が低下する可能性があります。
Kubernetes は、スケーラビリティ、復元力、スムーズなコンテナ オーケストレーションが必要な場合に最適なツールです。スタンドアロン コンテナーでは手動で管理するのが難しい多くの複雑なタスクを自動化することで、肩の負担を軽減します。ただし、流行っているからといって飛びつかないでください。まずアプリのニーズを評価してください。
小規模で予測可能なアプリを実行している場合は、Docker だけで十分かもしれません。しかし、成長し規模を拡大するにつれて、Kubernetes はあなたの親友になります。
ジュニア開発者として、Kubernetes とそのすべての可動部分 (Pod、Services、Ingress、自動スケーリング) の広範な範囲には圧倒される可能性があることを認めます。その機能を忘れてしまいがちです。しかし、重要な教訓は、いつ物事をシンプルにしておくべきなのか、また複雑にする価値があるのはいつかを知ることです。スタンドアロンのコンテナを使用することで、多くの時間と頭痛の種を節約できる場合があるため、常にメリットとデメリットを慎重に比較検討してください。
@piyushsachdeva
4 日目のビデオ
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3