GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

Kubernetes、Docker、コンテナ オーケストレーションを気にする必要があるのはなぜですか?

ある職場の人が、構築中の Raspberry Pi Kubernetes クラスターに関する最近のブログ投稿にコメントして、「なぜ Kubernetes や Docker などを気にする必要があるのか​​」と疑問に思いました。

素晴らしい質問です。私は自分でそれを理解しています。そこにはたくさんのリソースがありますが、私の言語を話すものはありませんでした. <ブロック引用>

「ねえ、私はこの素晴らしい新しいブログ アプリを持っています!」

「ファブ、ちょうだい!」

「もちろん、まず、このバージョンの Windows/Linux、このバージョンの .NET/Python/Node、およびこれらの前提条件があることを確認してください。」

「待ってください。来週、それが処理されたら電話します。」

これは、ソフトウェアが何年にもわたって構築されてきた方法です。それではデプロイしましょう。

<ブロック引用>

「コード/DLL/アプリケーションを圧縮したものです。」

"Lemme FTP/SFTP/これを 1 つの Explorer ウィンドウから別の Explorer ウィンドウにドラッグしてください。"

「そのファイルのこのバージョンはこれに設定されていますか?」

「待って、なに?」

"system/boss/dll/nounjs がバージョン 4.5.4.1 であることを確認してください。パッチが適用されています。"

「わかりました、Imma shush* をプロダクションに入れます。」

繰り返しますが、私たちは皆そこにいました。今は 2018 年ですが、あなたが認めるよりも多くの人がこれを行っています。

仮想マシンを入力してください!ずっといいですよね?必要なものがすべて入ったファイルが入った USB キーです。処理済み。

<ブロック引用>

「そんなことは忘れて、これを使ってください。コンピューターよりも優れています。これは仮想マシンです。ただし、注意してください。仮想であることを認識していないため、嘘を尊重してください。」

「わかりました、メールで送ってください。」

「まあ、それは 32 ギガです。Lemme UPS にしましょう。」

アプリはわずか 100 MB ですが、この VM は数十ギガです。 150 ポンドの人が 6000 ポンドのハマーを必要とするのはなぜですか?孤立かな。

<ブロック引用>

「アプリはますます複雑になっていますが、すばらしいです。現在 4 つの VM があります。DB 用に 1 つ、Redis 用に 1 つ、フロント エンド用に 1 つ、そしてショッピング カートに 1 つ。マイクロサービスです!」

「大好きです。」

「これは 2 TB のドライブです。」

分割しているのはいいことですが、肥大化するほどいいことではありません。ここで、これらすべてに対して apt upgrade/windows update を実行し、それらを維持する必要があります。 Lyft を手に入れることができるのに、なぜハマーを運転するのですか?

<ブロック引用>

「よし、机の下にあるこの強力なマシンでそれらをすべて実行しました。」

「いいですね、私たちはクラウドに移行しています。」

「はあ。これらすべての接続文字列を更新して、VM のアップロードを開始する必要があります。」

「素晴らしいでしょう。机が雲の中にあることを除けば、机の下にある機械のようなものです。」

「雲って何?」

「見えないサーバー ルームです。基本的には、机の下にあるコンピューターですが、見えません。」

ほとんどの VM インフラストラクチャはかなりずさんです。それはハードコードされた IP アドレスであり、同じサブネットに存在する不適切な名前の VM であり、それらをクラウドに移動します (リフト アンド シフト!)。 /P> <ブロック引用>

「ご存じのように、これらの VM はすべて重いです。アプリではないものの束を維持および移動する必要があります。コンテナーがその方法です。アプリの基本要件を定義し、他のすべてを共有するだけです。」

「これについて聞いたことがあります。「docker run hello-world」と入力すると、どのマシンでも中央ハブから hello world イメージ (Ubuntu ベース) が読み込まれ、ほぼ分離された方法で実行されます。保証されています。時が経っても働き、走ること。」

「いいですね。私たちのアプリの多くの部分が Linux 上の .NET Core にありますが、Python とノードもあります。」

「はい、前提条件がコンテナーに明確にリストされているため、すべて実行されます...実際、前提条件は他のコンテナー イメージへの参照です。」

「ずっとコンテナです。」

これで、DB、Redis、フロント エンド、およびショッピング カートをいくつかの単純なテキスト ファイルで定義できるようになりました。ホスト OS (メイン コンピューター... 金属) が多数のゲスト OS (文字通りコピー!) をロードしてから、すべてのアプリと前提条件をロードするのではなく、OS を共有し、必要に応じてバイナリとライブラリを共有します。 .

<ブロック引用>

「OK、Docker で多数のコンテナを実行していますが、時々ダウンしたり停止したりします。」

「もう一度実行しますか?」

「それだけでなく、3 つのショッピング カート コンテナーが必要な場合もあれば、2 つ以上の DB コンテナーが必要な場合もあります。さらに、それらの IP は時々変更されます」

「そのため、それらを実行し続け、スケーリングまたは自動スケーリングし、ネットワークとネーミング/DNS を管理するための何かが必要です。」

コンテナー オーケストレーターを入力します。 Docker Swarm、Mesos/Marathon、Azure Service Fabric などがありますが、この投稿では Kubernetes を使用します。

<ブロック引用>

「では、Kubernetes は私のコンテナーを実行し、それらを実行し続け、ネットワークの管理を支援しますか?」

「はい、いいえ。Kubernetes の一部、または 3 時間近く使用している私のようなクールな人々が言うように、k8s は、キー値ストレージの etcd や選択用の kube-scheduler などのマスター コンポーネントの一部です。 「ポッド」を実行するノード (ポッドはコンテナーよりもクールですが、ポッドが複数のコンテナーである場合もあります。それでも、非常にクールです。)

「用語集を作る必要があります。」

「くそったれよ」

Kubernetes は基本的にすべてプラグイン可能です。彼らのネットワーク設定が好きではありませんか?文字通りダース以上のオプションがあります。より良いチャートやグラフが必要ですか?オプションの全世界。

1 つの Dockerfile で説明できるように アプリを実行するために必要なものを宣言します。Kubernetes YAML ファイルには、コンテナーだけでなく、必要なポート、それぞれのレプリカの数 (Web ファームを考えてください)、名前、環境変数なども記述されています。フロント エンド、バック エンド、およびロード バランサーを示すファイルを次に示します。すべてがそこにあり、接続文字列は内部 DNS ルックアップになり、すべてのサービスには (必要に応じて) ロード バランサーがあり、手動または自動スケーリングできます。

<ブロック引用>

「わかりました。なぜ気にする必要があるのですか?」

「いくつかの理由があります。以前は、アプリをインストールするには、Word 文書と週末を提供する必要がありました。今では kubectl apply theapp.yaml と入力します。 1 分もかからずに実行されます。"

「週末の請求はまだです。」

簡単に言えば、私たちは DevOps の新しいフェーズの始まりにいます。プログラム的で、弾力的で、宣言的なものです。一貫性があり、明確で、モジュール化されています。

Julia Evans の「Kubernetes がクールな理由」と、Azure で Kubernetes クラスターを作成する方法 (および管理 VMS は無料) を読むことをお勧めします。

* 私は黙ることを試みています。私たちはマシンに Es Es Eaytch しません!しっかし! shush と shoosh の間のどこかで発音されます。言うときは、プチジュテを少し入れるようにしてください。

* CC の下で使用される画像

スポンサー: より高速な Python を解き放つ The Intel® Distribution for Python を使用して、将来のインテル® プラットフォームでアプリケーションのパフォーマンスをスーパーチャージします。 Windows、Linux、および macOS で利用できます。 Intel® Distribution for Python* を今すぐ入手してください!


Docker
  1. UbuntuにDockerとWordPressをインストールする

  2. なぜデイスとそれは何ですか?

  3. Docker でコンテナに関する情報を取得する方法

  1. Dockerを使用する時期と理由

  2. DockerをインストールしてLAMPスタックをデプロイする方法

  3. コンテナと Dockerfile から Docker イメージを作成する方法

  1. Howto:GitとGithubとは何ですか?どのように使用し、なぜ気にする必要がありますか?

  2. コンテナ化とは何ですか?DockerとKubernetesとはどのように関連していますか?

  3. Dockerボリュームとは何ですか?また、それらをどのように使用しますか?