このプロジェクトでは、init コンテナやサイドカー コンテナなどの Kubernetes の概念を適用したいと考えていましたが、ただチュートリアルに従うだけにはしたくありませんでした。
私の目標は、思い出に残るものを構築することでした。
ブレーンストーミングを行った後、Get Me App を紹介します!
Get Me App は、さまざまな GitHub リポジトリからコンテンツを動的に取得して表示するように設計されています。アプリケーションは Kubernetes ポッド内で実行され、2 つの主要コンポーネントで構成されます:
Nginx コンテナ: これはメイン アプリケーションとして機能し、動的に取得されたコンテンツをホストします。軽量で効率的であるため、静的な Web ページを提供するのに最適です。
サイドカー コンテナ: これはプライマリ nginx コンテナと並行して実行されます。ランダムに選択された GitHub ページから最新の HTML を取得することで、5 秒ごとにコンテンツを更新します。これにより、Nginx によって提供されるコンテンツが常に最新であることが保証されます。
Init Container: メイン コンテナが起動する前に環境を初期化します。 DNS エントリを解決することで、Get Me App Service が利用できるかどうかを確認します。この手順により、アプリケーションが実行開始後にサービスと対話できる状態になります。続きはここで読んでください(そうしなければなりませんでした)
nginx コンテナは、更新された HTML Web ページを提供し、NodePort サービスを介してブラウザからアクセスできるようにします。
始める前に、Kubernetes クラスターを作成するための構成ファイルがあることを確認してください。 Kind クラスターのセットアップ手順の詳細については、Kind クイック スタート ガイドを参照してください。
次の内容を含む config.yml という名前のファイルを作成して、Kind クラスターを定義します。
kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 name: cka-cluster nodes: - role: control-plane extraPortMappings: - containerPort: 30001 # Change this to match the NodePort hostPort: 30001 listenAddress: "0.0.0.0" protocol: tcp - role: worker - role: worker
次のコマンドを実行してクラスターを作成します:
kind create cluster --name kind-cka-cluster --config config.yml
次のコマンドを使用して、新しいクラスターにコンテキストを設定します。
kubectl config use-context kind-kind-cka-cluster
まず、プロジェクトのディレクトリとファイル構造を設定します。
mkdir get-me-app cd get-me-app nano get-me-app.yml
get-me-app.yml ファイルで、nginx コンテナ、コンテンツ更新用のサイドカー コンテナ、および初期データ フェッチ用の init コンテナを含む Kubernetes ポッドを定義します。
kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 name: cka-cluster nodes: - role: control-plane extraPortMappings: - containerPort: 30001 # Change this to match the NodePort hostPort: 30001 listenAddress: "0.0.0.0" protocol: tcp - role: worker - role: worker
nginx コンテナ: これはプライマリ コンテナであり、ポート 80 でコンテンツを提供します。 volumeMount により、ポッドの workdir ボリュームで /usr/share/nginx/html ディレクトリが利用可能になります。
サイドカー コンテナ (content-refresher): このコンテナは while true ループを実行し、Web ページの最新バージョンを 5 秒ごとにダウンロードします。これにより、workdir ボリューム内のコンテンツが常に最新の状態に保たれます。
コンテナーの初期化 (init-myservice): これは、DNS ルックアップを継続的に実行することで get-me-app-service が使用可能になるのを待ちます。初期化中に 1 回だけ実行され、完了後に再起動されません。
ボリューム: workdir ボリューム (emptyDir タイプ) はコンテナー間で共有され、init コンテナー、サイドカー、および nginx が同じコンテンツにアクセスして提供できるようにします。
ローカル マシン上のブラウザを通じてアプリにアクセスできるようにするには、ポッドのポート 80 を公開するように NodePort サービスを構成します。
このサービス定義を get-me-app-service.yml に追加します:
kind create cluster --name kind-cka-cluster --config config.yml
次のコマンドを使用してセットアップをデプロイします。
kubectl config use-context kind-kind-cka-cluster
ブラウザで http://localhost:30001 にアクセスし、github ページにアクセスしてください。 5 秒後にページを更新すると、別の github ページが表示されるはずです。
このプロジェクトは、init コンテナーが共有リソースを初期化する方法と、サイドカー コンテナーがそれらのリソースをメイン アプリケーションに対してどのように更新し続けるかを理解するのに役立ちました。これは、Kubernetes でのリアルタイム データ処理を実験し、学習するための魅力的な方法です。
あなたが提供したセクションの書式設定されたコンテンツは次のとおりです:
終了ノート: このプロジェクトはビデオ チュートリアルの一部ではないことに注意してください。一般的なガイダンスとしてチュートリアルの概念を使用して、自分で何かを構築したいと考えていました。
以上がCKA フルコースデー マルチコンテナ ポッド Kubernetes - サイドカーと Init コンテナの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。