画像とテキスト |あなたのガールフレンドでも Kubernetes を理解できます!

画像とテキスト |あなたのガールフレンドでも Kubernetes を理解できます!

私は最近 Kubernetes を使い始め、その内部をより深く理解したいと考えていました。これらについてプレゼンテーションをしました!

容器

Kubernetes を理解する前に、コンテナとは何か、そしてなぜそれほど人気が​​あるのか​​を少し説明しましょう。

結局のところ、コンテナが何であるかを知らずにコンテナ オーケストレーター (Kubernetes) について話しても意味がありません。

容器

「コンテナ」とは、中に入れるものすべてを収納する容器です。アプリケーション コード、依存ライブラリ、そしてカーネルに至るまでの依存関係など。

ここでの重要な概念は分離です。すべてのコンテンツを他のコンテンツから分離して、より適切に制御できるようにします。

コンテナは 3 種類の分離を提供します。

  • ワークスペースの分離(プロセス、ネットワーク)
  • リソースの分離(CPU、メモリ)
  • ファイルシステムの分離(ユニオンファイルシステム)

コンテナを VM のように考えます。スリムで、高速(しかもおまけに)、小型です。そして、これらはどれも構築されていません。

代わりに、Linux システムに存在する構造 (cgroup、名前空間など) を使用し、その上に優れた抽象化を構築しました。

コンテナが何であるかがわかったので、コンテナがなぜ人気があるのか​​簡単に理解できます。アプリケーションのバイナリ/コードを配布できるだけでなく、アプリケーションを実際に実行するために必要な環境全体を提供することもできます。

コンテナは非常に小さなユニットとして構築できるため、「自分のマシンで動作する」問題に対する完璧なソリューションとなります。

Kubernetes はいつ使用すればよいですか?

コンテナはすべてが優れており、ソフトウェア開発者としての生活ははるかに良くなりました。では、なぜ Kubernetes のようなコンテナ オーケストレーション ツールという別のテクノロジーが必要なのでしょうか?

特定の状態に入るときは、それを使用して複数のコンテナを管理する必要があります。

Q: フロントエンド コンテナはどこにあり、いくつ実行すればよいですか?

A: 難しいですね。コンテナ オーケストレーション ツールを使用してください。

Q: フロントエンド コンテナーを新しく作成したバックエンド コンテナーと通信させるにはどうすればよいですか?

A: IP をハードコードするか、コンテナ オーケストレーション ツールを使用します。

Q: ローリングアップグレードを実行するにはどうすればよいですか?

A: 各ステップで手動で実行するか、コンテナ オーケストレーション ツールを使用します。

私がKubernetesを好む理由

Docker Swarm、Mesos、Kubernetes など、コンテナ オーケストレーション ツールは数多くあります。私が Kubernetes を選択したのは、Kubernetes が… という理由からです (この記事の目的もそこにあります)。

レゴ ブロックのように、大規模なコンテナ オーケストレーションを実行するために必要なコンポーネントを備えているだけでなく、内部および外部のさまざまなコンポーネントをカスタム コンポーネントに交換できる柔軟性も備えています。

カスタム スケジューラがあれば便利です。新しいリソース タイプが必要な場合は、CRD を記述します。さらに、コミュニティは非常に活発で、ツールは急速に進化しています。

Kubernetes アーキテクチャ

すべての Kubernetes クラスターには、マスター ノードとワーカー ノードの 2 種類のノードがあります。名前が示すように、マスター ノードは、ワーカーがペイロード (アプリケーション) を実行するクラスターを制御および監視します。

クラスターは単一のマスター ノードで動作できますが、高可用性を実現するには 3 つのマスター ノードを使用するのが最適です (HA クラスターと呼ばれます)。

マスターノードとそのコンポーネントを詳しく見てみましょう。

①etcd: Kubernetesオブジェクトに関するすべてのデータ、その現在のステータス、アクセス情報、その他のクラスター構成情報を保存するために使用されるデータベース。

②APIサーバー:クラスター全体を操作するためのエンドポイントを公開するRESTful APIサーバー。マスター ノードとワーカー ノードのほぼすべてのコンポーネントは、このサーバーと通信してそれぞれの機能を実行します。

③スケジューラ:どのペイロードをどのマシンで実行する必要があるかを決定する役割を担います。

④コントロールマネージャー:これは、クラスターの状態を監視し(APIサーバーを呼び出してこのデータを取得することにより)、クラスターを目的の状態にするアクションを実行する制御ループです。

⑤kubelet: 動作ノードの中核です。マスターノード API サーバーと通信し、そのノードにスケジュールされたコンテナを実行します。

⑥kube-proxy: IPテーブル/IPVSを使用してPodのネットワーク要件を処理します。

⑦Pod: すべてのコンテナの実行はKubernetesのおかげです。 Pod の抽象化がなければ、Kubernetes でコンテナを実行することは不可能です。ポッドは、コンテナ間の Kubernetes ネットワークに重要な機能を追加します。

ハッピーポッド

Pod には複数のコンテナを含めることができ、それらのコンテナ内で実行されているすべてのサーバーは互いをローカル ホストとして認識できます。

これにより、アプリケーションのさまざまな側面を個別のコンテナーに分離し、すべてを 1 つのコンテナーとして一緒に読み込むことが非常に便利になります。

さまざまなニーズを満たすために、サイドカー、プロキシ、アンバサダーなど、さまざまなポッド モードがあります。詳細についてはこの記事[1]を参照してください。

Pod ネットワーク インターフェースは、同じノード内の他の Pod や他のワーカー ノードと通信するためのメカニズムを提供します。

さらに、各ポッドには独自の IP アドレスが割り当てられ、kube-proxy はそれを使用してトラフィックをルーティングします。この IP アドレスはクラスター内でのみ表示されます。

コンテナ内にマウントされたボリュームもすべてのコンテナから見え、これらのボリュームはコンテナ間の非同期通信に使用されることもあります。

たとえば、アプリケーションが写真アップロード アプリケーション (Instagram など) であると仮定すると、これらのファイルをボリュームに保存し、同じ Pod 内の別のコンテナーがボリューム内の新しいファイルを監視して処理を開始し、複数のサイズを作成してクラウド ストレージにアップロードすることができます。

コントローラ

Kubernetes には、ReplicaSet、レプリケーション コントローラー、デプロイメント、StatefulSet、サービスなど、多くのコントローラーがあります。

これらは、何らかの方法でポッドを制御するオブジェクトです。いくつか重要なものを見てみましょう。

(1)レプリカセット

ReplicaSetは、Podを複製する最も優れた機能を提供します。

このコントローラーの主な役割は、特定の Pod のレプリカを作成することです。何らかの理由でポッドが停止した場合、このコントローラーに通知が送られ、すぐに新しいポッドを作成するアクションが開始されます。

(2)展開

ReplicaSet の展開を制御しようとしています (ボサボサの髪)

Deployment は、ReplicaSet を使用してレプリカを管理する高レベルのオブジェクトです。新しいレプリカセットをスケールアップし、既存のレプリカセットをスケールダウン(最終的には削除)することで、ローリング アップグレードを実現します。

(3)サービス

ドローンサービスとして表現され、対応するポッドにパケットを配信する

サービスは、適切なノードに「パケット」を配布するロード バランサとして機能することを主な役割とするコントローラ オブジェクトです。

基本的に、これはワーカーノード間で類似のポッド (通常はポッド ラベルによって識別されます) をグループ化するために使用されるコントローラー構造です。

「バックエンド」アプリケーションと通信する「フロントエンド」アプリケーションがあると仮定すると、各アプリケーションのインスタンスが多数実行されている可能性があります。

各バックエンド Pod の IP をハードコーディングする必要はなく、バックエンド サービスにパケットを送信し、それに応じて負荷分散と転送の方法を決定します。

PS: すべてのパケット ルーティングは IP テーブル/IPVS/CNI プラグインによって処理されるため、サービスは仮想エンティティに似ていることに注意してください。

これにより、実際のエンティティとして認識されやすくなり、Kubernetes エコシステムにおける役割を理解しやすくなります。

(4)イングレス

すべてのパケットがクラスターに流れ込むフローティングプラットフォームに入る

Ingress コントローラーは外部との単一の接点であり、クラスター内で実行されているすべてのサービスと通信できます。これにより、セキュリティ ポリシーの設定、監視、さらにはログインも 1 か所で簡単に実行できるようになります。

PS: Kubernetes には、DaemonSet、StatefulSet、Jobs など、他にも多くのコントローラー オブジェクトがあります。

<<:  Google、クラウドコンピューティング部門を再編、小規模なレイオフを実施

>>:  Kubernetes を大規模に保護するための 3 つの重要なポイント

推薦する

hostwinds-10.3$/Windows/512m メモリ/20g ハードディスク/25m 無制限

Hostwinds は、生涯 20% オフの割引コード WHTJAN をリリースしました。公式 We...

#BlackFriday# maple-hosting: オランダの苦情防止サーバー、月額 159 ドル、e3-1246v3/32g メモリ/2*1T SSD/100T トラフィック/1G 帯域幅

maple-hosting はブラックフライデーのプロモーションを正式に開始しました。専用サーバーを...

faconhostはどうですか?オランダの VPS の簡単なレビュー (複数の強化機能付き: Ryzen 9 7950X、AS4809、AS9929)

英国で新たに登録された海外VPS業者として、faconhostの最初のデータセンターはオランダのアム...

簡単な分析: Baidu 入札ランディング ページ効果分析

数日前、私は「Baidu 入札の単位原価計算」と「Baidu 入札の図解分析: 期間分析」という 2...

個人サイトSEOの実践経験まとめ(初心者向け)

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますSEO を...

簡単な議論:業務効率を向上させるためにプロモーションスタッフを評価する方法

プロモーション担当者はどのように評価すべきでしょうか? 草の根のウェブマスターでない場合は、一般的に...

創造性を刺激する: CodeArts Repo は効率的なコード共同開発を体験できます

1. コードホスティングの歴史バージョン管理システムの開発の歴史は、簡単にまとめると 3 世代にわた...

自分を貫き、自分を突破することが必要。ブログのコメントから生まれた思い

「もっと事例が多ければもっと魅力的になるのに」と、ブロガーの友人が私のブログへのメッセージで、私のブ...

ウェブサイトを最適化する際に SEO に独立した IP を使用する利点は何ですか?

皆さんおはようございます。今日は週末です。杭州の多くの企業は休業していますが、ウェブサイトの最適化の...

Inspektor Gadget: クラウド ネイティブ時代の eBPF ツールチェーン フレームワーク

1. Inspektor Gadget とは何ですか? Inspektor Gadget は、Kub...

ハードウェア + ソフトウェア + 質問で SEO 面接で有利になる

SEO業界について語るとき、人々はバーゲン価格や混沌とした競争といった言葉を思い浮かべることが多い。...

映画やテレビ作品の権利者は「剣ネット作戦」を利用して権利を守り、Fengxing.comは調査を受けた。

新華社世論、北京、7月9日:今年、国の「剣ネット作戦」により著作権侵害の取り締まりが強化され、インタ...

コンピューティングパワーの「発電所」が次々と建設されています。プラグアンドプレイのコンピューティングパワーはどれくらい遠いのでしょうか?

第二次産業革命の主なテーマが電気であったとすれば、第三次産業革命の主なテーマはコンピューティング能力...

再び判明した:百度はPPS買収の意向に署名し、近日中にデューデリジェンスを実施する予定

3月22日に突然、百度がPPSを買収するというニュースが流れたが、その後双方とも否定した。しかし、筆...