Kubernetes は面白そうだったので(ギリシャ人なら名前に問題があると思うでしょうが)、ずっと学びたいと思っていましたが、クラスターで何も実行していなかったため、その機会がありませんでした。最近、仕事でKubernetes関連のことに携わるようになったので、機会を見て調べてみたのですが、現状の情報(公式チュートリアルも含め)が長すぎて無理があり、最初は少しイライラしました。 数日間の調査を経て、Kubernetes のコアコンセプトを徐々に理解し、本番環境にデプロイしました。私の履歴書には「Kubernetes エキスパート」と記載されていたので、すぐにあるアイデアが浮かびました。システムに関する私の幅広い理解と、何時間もの調査から得た知識を、もっと多くの人に公開したらどうだろう、と。もう一度、まとまりのない記事を書かないように自分を納得させることができませんでしたが、すぐに次のことに気付きました。 既存の記事に関して私が抱えていた主な問題は、詳細に入る前に、これらのコンポーネントが何であるか、それらがどのように組み合わされているかについての概要をまとめたものが見つからなかったことです。 この高度なプレゼンテーション方法は私にとって学習に最適な方法です。私はこのように書きましたが、あなたにも効果があることを願っています。 Kubernetes の仕組みをわかりやすく説明した専門家による記事やチュートリアルをご存知でしたら、私に教えないでください。必要なときにあなたがいてくれて、私が記事を書いたときにあなたがもっと早く公開してくれなかったからです。 また、私が Kubernetes を学習し始めてまだ 1 週間ほどなので、あまり詳細な内容にはならず、不正確な部分もあるかもしれませんが、間違いがないように願っています。また、ここでの情報は、シンプルなクラスターを実行できる程度には十分なはずです。 そうは言っても、結局のところ、Kubernetes の概念は非常に単純であることがわかりましたが、まだ知らないことがたくさんあることは確かです。しかし、私が知っていたことは、クラスターをセットアップしてその上でアプリを実行するには十分であり、ほとんどの人にとって開始方法を知るのに十分であると確信しています。 基本概念 まず最初に、Kubernetes のさまざまな部分を詳しく見ていく必要があります。
これらはすべて、コマンドラインから kubectl を使用して作成できますが、より安全には、デプロイする内容の定義と詳細が含まれる YAML ファイル ( kubectl apply -f <yaml ファイル> を実行) を介して作成することもできます。 大まかに言うと、コンテナをポッドに配置します。ポッドはデプロイメントによって作成およびデプロイされ、そのネットワークはサービスによって処理され、外部からサーバーにアクセスできるようにイングレスを追加します。 これらの各セクションを 1 つずつ確認して、YAML 構成がどのようになっているかを確認してみましょう。 ポッド コンテナ内で Redis イメージを実行するポッドの YAML 構成を見てみましょう。 Pod は永続的ではないため、直接使用することはほとんどないことを覚えておいてください。 代わりに、デプロイメントを使用して間接的にポッドをデプロイします。これについては次に説明します。 以下の設定例は変更専用です。 ただ眺めて、その美しさに驚嘆しながら読み続けるだけです。 ご覧のとおり、非常に簡単です。Kubernetes 固有のものをいくつか追加し、それぞれをコピーして貼り付けるだけです。次に、この構成が Pod 用であることを宣言し、名前を付け、その中で実行されるコンテナーとそれらがリッスンするポートを指定して、ファイル全体を削除すれば、準備完了です。 Pod の詳細については、Kubernetes の公式ドキュメントを参照してください。 展開 ここでは、Deployment を使用して上記の Pod を実際に実行する方法を説明します。 上記の Pod 構成にはまったく注意を払う必要はありません。デプロイメントで再定義します。 これは主に上記の Pod 構成ですが、レプリカなどの追加の構成がいくつか含まれていることに気付くでしょう。これらは、デプロイメントの名前と、デプロイするレプリカの数を定義します。 レプリカの数を変更すると、テンプレート セクションで指定されたポッドがさらにデプロイされます。 デプロイメントの詳細については、Kubernetes の公式ドキュメントを参照してください。 サービス Pod がデプロイされたので、そのポートをクラスターの残りの部分に公開する必要があります。 Deployment の containerPort ディレクティブは Docker ポートを公開しますが、実際にはホスト上のポートを転送しないため、複数の Pod (同じ Pod 内のコンテナではない) が競合することなく同じポートを使用できます。 上記のポートをクラスター上で実行されている他のポッドに実際に公開するには、そのためのサービスを作成する必要があります。 これにより、ポートを転送するために必要なルールが作成され、このポッドの IP を解決するために使用できる DNS エントリが提供されます。 これにより、Redis ポートがクラスター内の他の Pod に公開され、my-service:6379 経由で接続できるようになります。 アプリケーションのさらに多くの部分をデプロイするには、別のデプロイメントと関連するサービスをクラスターに追加するだけです。 上記の Redis とまったく同じ方法でメイン アプリケーション サービスをデプロイできます。 イングレス 最後に、Ingress を使用してサービスをインターネットに公開できます。 以下は Traefik を使用した例です。Redis を外部に公開したくないかもしれませんが、同じアプローチが独自のアプリケーションにも適用されます。 この構成セクションでは、Traefik に対して、redis.yourdomain.com という名前のホスト上のすべてのトラフィックをサービス ポート 6379 に転送するように指示します。私の知る限り、これは Traefik のみの設定です。 設定を適用すると、Pod は redis.yourdomain.com 上の Traefik 経由でインターネットに公開されます。 この記事が初心者にとって役立つことを願っています。 Kubernetes の基礎は短いため、この投稿も短いものとなりましたが、最小限の手間でサービスを実行する方法については説明できました。 これで、Kubernetes が何であるかが理解できたはずです。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。 以下もご興味があるかもしれません:
|
<<: Windows で MySQL 5.7.17 をインストールし、エンコードを utf8 に設定する方法
>>: WebStormはVue3統合APIのソリューションを正しく識別できません
1. Dockerサーバーへのリモートアクセスを有効にするdocker が配置されているリモート サ...
ユーザーを作成します: 'oukele' によって識別されるユーザー 'ou...
この記事では、主に、円形のダイナミックな光る特殊効果アニメーションを実現するための純粋な CSS3 ...
SQL ファジークエリステートメント一般的なファジーステートメントの構文は次のとおりです。 SELE...
エラー 1290 (HY000) : MySQL サーバーは –secure-file-priv オ...
MySQL データベースの実行効率はプログラムの実行速度に大きな影響を与えます。データベースの効率的...
以前、インターネット上で動的ルーティング設定をいくつか見たことがありましたが、現在のプロジェクトとは...
最新の Windows 10 アップデートをインストールした後、システム UI の詳細な効果が顕著に...
背景:テーブルスペース: すべての INNODB データはテーブルスペース (共有テーブルスペース)...
第1章 ソースコードのインストールRPM パッケージは特定のシステムとプラットフォームに応じて指定さ...
この記事では主に Vue プロジェクトを紹介します。要素の導入を前提として、コンポーネントを 2 回...
1.画像をダウンロードするdocker pull selenium/hub docker pull ...
目次1. シナリオの説明: 2. 事例のデモンストレーション: 2.1. MySQLの障害発生前にデ...
目次1. nginxプロセスロックの役割2. エントリーレベルのロックの使用3. nginxプロセス...
序文プロジェクト要件: Dockeridea に Docker プラグインをインストールし、Dock...